1.什么是UIKite動力學
?UIKit動力學最大的特點是將現(xiàn)實世界動力驅動的動畫引入了UIKit,
比如重力,鉸鏈連接,碰撞,懸掛等效果,即將2D物理引擎引入了UIKit
?注意:UIKit動力學的引入,并不是為了替代CA或者UIView動畫,在
絕大多數(shù)情況下CA或者UIView動畫仍然是最優(yōu)方案,只有在需要引
入逼真的交互設計的時候,才需要使用UIKit動力學它是作為現(xiàn)有交互
設計和實現(xiàn)的一種補充
?其他2D仿真引擎:
?BOX2D:C語言框架,免費
?Chipmunk:C語言框架免費,其他版本收費
2.UIDynamic中三個重要的概念
*Dynamic Animator:動畫者,為動力學元素提供物理學相關的能力及動畫,同時為這些元素提供相關的上下文,是動力學元素與底層iOS物理引擎之間的中介,將Behavior對象添加到Animator即可實現(xiàn)動力仿真
*Dynamic Animator Item:動力學元素,是任何遵守了UIDynamicItem協(xié)議的對象,從iOS 7.0開始,UIView和UICollectionViewLayoutAttributes默認實現(xiàn)該協(xié)議。如果自定義的對象實現(xiàn)了該協(xié)議,即可通過Dynamic Animator實現(xiàn)物理仿真
*UIDynamicBehavior:仿真行為,是動力學行為的父類,基本的動力學行為類UIGravityBehavior蠕嫁、UICollisionBehavior怀酷、UIAttachmentBehavior、UISnapBehavior皿渗、UIPushBehavior以及UIDynamicItemBehavior均繼承自該父類
3.動力學動畫元素(Dynamic Animator Item)協(xié)議
?只有遵守了UIDynamicItem協(xié)議的對象才可以參與到UI動力學仿真中
?從iOS 7開始,UIView和UICollectionViewLayoutAttributes類默認實現(xiàn)了該協(xié)議
?協(xié)議定義的屬性:
?bounds:Dynamic animator需要動畫元素的邊框時調(diào)用,只讀屬性,用于計算物體的邊界以及質量
?center:動力學元素的中心點,讀寫屬性
?transform:動力學元素的旋轉角度,讀寫屬性(需要指定Layer的形變屬性)
4.動力學行為的分類:
? iOS7.0中提供的動力學行為包括:
?UIGravityBehavior:重力行為
?UICollisionBehavior:碰撞行為
?UIAttachmentBehavior:附著行為
?UISnapBehavior:吸附行為
?UIPushBehavior:推行為
?UIDynamicItemBehavior:動力學元素行為
組合使用可以實現(xiàn)一些較為復雜的效果