一、UIKit Dynamics简介
UIkit Dynamics是从iOS 7开始支持的,其实就是UIKit的一套动画和交互体系。我们现在进行的UI动画基本都是使用CoreAnimation或者UIView animations。让UIView视图能够模拟逼真的现实世界的逼真物理行为效果,实现诸如物理在重力下落或者两个物体碰撞的逼真效果,本质上这是苹果开发的一个简单的动画物理引擎,使得APP操作起来更加真实,相对于一些更加专业的游戏物理引擎如unity3D,Dynamics用更加简单的API实现这些动态效果。
二、UIkit DynamicsAPI的开发逻辑是:
1.首先创建基于一个参考视图的力学生成器UIDynamicAnimator对象;
2.创建要发生物理作用的视图的UIDynamicBehavior子类的各种行为对象(总共有重力行为UIGravityBehavior,碰撞UICollisionBehavior,连接与弹簧行为UIAttachmentBehavior,吸附行为UISnapBehavior,推力行为UIPushBehavior和物体属性UIDynamicItemBehavior六类),并设置行为对象的属性参数;
3.将行为对象添加到力学生成器。
三、UIKit Dynamics示例使用
重力行为:让一个物体视图在重力作用下下落或者在广义的力下往任意方向运动。
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(100, 50, 100, 100)];
aView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:aView];
//1
UIDynamicAnimator* animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
//2
UIGravityBehavior* gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[aView]];
//3
[animator addBehavior:gravityBeahvior];
self.animator = animator;
}
首先以控制器的视图self.view作为参考系创建力学生成器;然后创建重力行为,此重力行为用一个数组对象初始化,这个数组对象的成员即为需要添加重力行为的物体对象;除此,可以设置重力行为的作用力方向向量,这决定物体的运动方向及运动快慢;最后将行为添加至力学生成器。