在接觸CocoaTouch的過程中听系,
常常會有個經驗是戒祠,需要花一點時間了解一套工具是如何使用的弥臼。
像是UITableview就是一個需要花時間,我將來也想好好解釋的一個類別朝群。
因為他們是抽象的類別燕耿,沒有辦法像泥巴一樣拿在手上玩一玩,丟一丟姜胖,就知道那些東西是幹嘛的誉帅,有做什麼的可能性。
// 延伸閱讀 : Bret Victor講到人如何透過感知學習
所以必須透過實作那些抽象的類右莱,去知道他們彼此之間是如何使用的蚜锨。
但常常會有一個情況是,我需要花時間去理解它們之間抽象的關係慢蜓,
而且常常忘記他們彼此間使用的先後順序亚再,因為那對於剛接觸的人來說,不是那麼直覺的晨抡。
而我在想氛悬,如果能有人解釋一下這個抽象的概念,將會讓我理解的更快耘柱。
如同我在這篇文章有提過如捅,
其實學習的資源都已經很多了,例如這篇教學就有很清晰也好吸收的資源调煎。
所以我這邊不會花太多力氣再做重複的事镜遣,反而希望能透過將抽象類別之間的關係描述清楚,來讓使用的人更能透過我們人習慣的抽象思考士袄,去連結可能的功能悲关。
讓我們開始蓋積木吧。
官方的API可以參考這裡
但我覺得光是看這個文件娄柳,也無法一目瞭然要如何使用坚洽。
因此在這邊我會盡量用強烈一點的字眼去敘述,讓讀者對於該字串產生聯結西土。
Dynamic Animator
在這個虛擬的空間裡,要讓那些程式碼創(chuàng)造出來的元件鞍盗,動得像是在現實世界裡需了,被各種力學影響的一樣跳昼,就需要一個動畫師去引導這一切發(fā)生。
而這個動畫師就是UIDynamicAnimator 就像是這個功能裡的媽媽肋乍。
Dynamic Behavior
那麼這個動畫師UIDynamicAnimator需要創(chuàng)造一個怎麼樣的世界鹅颊,就是由這個UIDynamicBehavior來做定義,例如將一個UIGravityBehavior墓造,也就是重力的行為加入這個UIDynamicAnimator堪伍,那麼在這個虛擬的世界中,就像是現實的世界一樣觅闽,有了一個重力場帝雇。
除了重力的行為UIGravityBehavior之外,還有下列幾個行為可以套用蛉拙,UIAttachmentBehavior, UICollisionBehavior, UIDynamicItemBehavior, UIPushBehavior, UISnapBehavior尸闸。而當然,你也可以創(chuàng)造你自己的孕锄。
Dynamic Item
就像我說的吮廉,這是一個虛擬世界,任何的規(guī)則都是我設定的畸肆,我甚至能決定宦芦,誰要被哪個行為影響,誰不要轴脐。這讓這個程式相較於現實世界调卑,產生了無限可能性。
透過將UIDynamicItem加到需要符合的規(guī)則豁辉,也就是UIDynamicBehavior裡面令野,這樣子這些物件就必須要符合特定的物理特性,或者瞬間的施加力道在這個物件上徽级。
所有的UIView以及UICollectionViewLayoutAttributes
都是一個UIDynamicItem
气破,也就是說都符合這個Protocol
好了,所以以上就是簡單的介紹餐抢,你只需要有一個
- 動畫師 Animator
- 行為 Behavior
- 物件 Item
你就可以著手來嘗試一下這個CocoaTouch的模擬物理的物件是如何運作现使,他還有許多的功能我沒有提到。但一但瞭解了基本概念旷痕,相信你可以很快掌握其他技巧碳锈。
相關資源:
Getting Started with UIKit Dynamics
What's New in UIKit Dynamics and Visual Effects
這裡是一個簡單範例
這邊是官方範例
DynamicsCatalog
StickyCorners
讓我們一起建造積木吧!
如果這類的文章對你有用欺抗,拜託告訴我售碳!
以前常常看別人說,不過贸人,真的间景,你們的回覆是我發(fā)帖的動力啊艺智!
Peace!