簡介數組
UIKit動力學最大的特色是將現實世界動力驅動的動畫引入了UIKit,好比重力,鉸鏈鏈接,碰撞,懸掛等效果,即將2D物理引擎引入了UIKit框架
注意:UIKit動力學的引入,並非爲了替代CA或者UIView動畫,在絕大多數狀況下CA或者UIView動畫仍然是最優方案,只有在須要引入逼真的交互設計的時候,才須要使用UIKit動力學它是做爲現有交互設計和實現的一種補充動畫
其餘2D仿真引擎:spa
BOX2D:C語言框架,免費設計
Chipmunk:C語言框架免費,其餘版本收費對象
UIDynamic中的三個重要概念繼承
Dynamic Animator:動畫者,爲動力學元素提供物理學相關的能力及動畫,同時爲這些元素提供相關的上下文,是動力學元素與底層iOS物理引擎之間的中介,將Behavior對象添加到Animator便可實現動力仿真ip
Dynamic Animator Item:動力學元素,是任何遵照了UIDynamicItem協議的對象,從iOS 7.0開始,UIView和UICollectionViewLayoutAttributes默認實現該協議。若是自定義的對象實現了該協議,便可經過Dynamic Animator實現物理仿真ci
UIDynamicBehavior:仿真行爲,是動力學行爲的父類,基本的動力學行爲類UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior以及UIDynamicItemBehavior均繼承自該父類it
Dynamic Animator:動畫者,爲動力學元素提供物理學相關的能力及動畫,同時爲這些元素提供相關的上下文,是動力學元素與底層iOS物理引擎之間的中介,將Behavior對象添加到Animator便可實現動力仿真
Dynamic Animator Item:動力學元素,是任何遵照了UIDynamicItem協議的對象,從iOS 7.0開始,UIView和UICollectionViewLayoutAttributes默認實現該協議。若是自定義的對象實現了該協議,便可經過Dynamic Animator實現物理仿真
UIDynamicBehavior:仿真行爲,是動力學行爲的父類,基本的動力學行爲類UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior以及UIDynamicItemBehavior均繼承自該父類
Dynamic Animator:動畫者,爲動力學元素提供物理學相關的能力及動畫,同時爲這些元素提供相關的上下文,是動力學元素與底層iOS物理引擎之間的中介,將Behavior對象添加到Animator便可實現動力仿真
Dynamic Animator Item:動力學元素,是任何遵照了UIDynamicItem協議的對象,從iOS 7.0開始,UIView和UICollectionViewLayoutAttributes默認實現該協議。若是自定義的對象實現了該協議,便可經過Dynamic Animator實現物理仿真
UIDynamicBehavior:仿真行爲,是動力學行爲的父類,基本的動力學行爲類UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior以及UIDynamicItemBehavior均繼承自該父類
iOS7.0中提供的動力學行爲包括:
UIGravityBehavior:重力行爲
UICollisionBehavior:碰撞行爲
UIAttachmentBehavior:附着行爲
附着屬性:
attachedBehaviorType:鏈接類型(鏈接到錨點或視圖)
items:鏈接視圖數組
anchorPoint:鏈接錨點
length:距離鏈接錨點的距離
只要設置瞭如下兩個屬性,即爲彈性鏈接
damping:振幅大小
frequency:振動頻率
UISnapBehavior:吸附行爲 有damping屬性:振幅大小,默認爲0.5f
UIPushBehavior:推行爲
推屬性:
mode:推進類型(一次性或是持續推)
active:是否激活,若是是一次性推,須要激活
angle:推進角度
magnitude:推進力量
UISnapBehavior :吸附
UIDynamicItemBehavior:動力學元素行爲
全部的UIDynamicBehavior都是能夠獨立做用,同時也遵照力的合成。也就是說,組合使用行爲能夠實現一些較複雜的效果
動力學元素行爲(DynamicItem)
是一個輔助的行爲,用來設置運動學元素參與物理仿真過程當中的參數,如:彈性係數、摩擦係數、密度、阻力、角阻力以及是否容許旋轉等
elasticity(彈性係數):決定了碰撞的彈性程度,好比碰撞時物體的彈性
friction(摩擦係數):決定了沿接觸面滑動時的摩擦力大小
density(密度):跟size結合使用,計算物體的總質量。質量越大,物體加速或減速就越困難
resistance(阻力):決定線性移動的阻力大小,與摩擦係數不一樣,摩擦係數只做用於滑動運動
angularResistance(角阻力):決定旋轉運動時的阻力大小
allowsRotation(容許旋轉):這個屬性頗有意思,它在真實的物理世界沒有對應的模型。設置這個屬性爲NO 物體就徹底不會轉動,而不管施加多大的轉動力