简介数组
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 物体就彻底不会转动,而不管施加多大的转动力