1.什么是UIKite动力学
•UIKit动力学最大的特点是将现实世界动力驱动的动画引入了UIKit,
比如重力,铰链连接,碰撞,悬挂等效果,即将2D物理引擎引入了UIKit
•注意:UIKit动力学的引入,并不是为了替代CA或者UIView动画,在
绝大多数情况下CA或者UIView动画仍然是最优方案,只有在需要引
入逼真的交互设计的时候,才需要使用UIKit动力学它是作为现有交互
设计和实现的一种补充
•其他2D仿真引擎:
➢BOX2D:C语言框架,免费
➢Chipmunk:C语言框架免费,其他版本收费
2.UIDynamic中三个重要的概念
*Dynamic Animator:动画者,为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学元素与底层iOS物理引擎之间的中介,将Behavior对象添加到Animator即可实现动力仿真
*Dynamic Animator Item:动力学元素,是任何遵守了UIDynamicItem协议的对象,从iOS 7.0开始,UIView和UICollectionViewLayoutAttributes默认实现该协议。如果自定义的对象实现了该协议,即可通过Dynamic Animator实现物理仿真
*UIDynamicBehavior:仿真行为,是动力学行为的父类,基本的动力学行为类UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushBehavior以及UIDynamicItemBehavior均继承自该父类
3.动力学动画元素(Dynamic Animator Item)协议
•只有遵守了UIDynamicItem协议的对象才可以参与到UI动力学仿真中
•从iOS 7开始,UIView和UICollectionViewLayoutAttributes类默认实现了该协议
•协议定义的属性:
➢bounds:Dynamic animator需要动画元素的边框时调用,只读属性,用于计算物体的边界以及质量
➢center:动力学元素的中心点,读写属性
➢transform:动力学元素的旋转角度,读写属性(需要指定Layer的形变属性)
4.动力学行为的分类:
• iOS7.0中提供的动力学行为包括:
➢UIGravityBehavior:重力行为
➢UICollisionBehavior:碰撞行为
➢UIAttachmentBehavior:附着行为
➢UISnapBehavior:吸附行为
➢UIPushBehavior:推行为
➢UIDynamicItemBehavior:动力学元素行为
组合使用可以实现一些较为复杂的效果