UIKit Dynamics--iOS7

Dynamic Items 简介

Apple Library相关的 UIKit Dynamics 的焦点都是关于 items 之间相互的作用及其动画。有一个要求,为了在一个 item 上使用 dynamic behavior,item必须满足 UIDynamicItem 协议。该协议定义了三个重要的属性,boundscentertransformbounds属性是readonly的,center,transform 属性是read/write的,center 需要更新动画的进度,transform 属性返回一个 CGAffineTransform 的对象。

从 iOS7 开始,默认的只有 UIViewUICollectionViewLayoutAttributes 类可实现该协议。但是,仍然可以自己创建类去实现之。

@property(nonatomic, readonly) CGRect bounds
@property(nonatomic, readwrite) CGPoint center
@property(nonatomic, readwrite) CGAffineTransform transform

Dynamic Behaviors

在 UIKit Dynamics 中,一个 Dynamic Behavior 模拟的是真实世界的物理行为。包含以下六个类:

  • UIAttachmentBehavior
  • UICollisionBehavior
  • UIGravityBehavior
  • UIPushBehavior
  • UISnapBehavior
  • UIDynamicItemBehavior

前五个分别是--附着、碰撞、重力、推力、捕捉。最后一个不是一个具体的行为,但是也很有用~按我的理解就是可以设置一个物体的本质属性,不依赖于外界而存在的。

最近写代码用到 UIDynamicItemBehavior,感觉太棒了!

  • allowsRotation 是否可以旋转;默认YES;
  • density 密度;默认1.0;
  • elasticity 弹性系数;默认0.0;
  • friction 摩擦系数;默认0.0;
  • resistance 阻力;默认0.0;

当时想要让一个球能够一开始就有方向有速度的运动,以下两个函数不能再赞,很简便。

addAngularVelocity(CGFloat):forItem(id[UIDynamicItem]) //设置角速度addLinearVelocity(CGPoint):forItem(id[UIDynamicItem]) //设置线速度

UIDynamicAnimator

UIDynamicBehavior 需要添加到 animator 上才能发生作用;

ReferenceView

等同于力学参考系。