iOS学习_UIDynamic(物理仿真)学习笔记

UIDynamic : 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象如:重力、弹性碰撞等

 使用步骤 :

1.创建物理仿真器 :

[[ UIDynamicAnimator alloc] initWithReferenceView : ]//View表示物理仿真的范围

2.创建物理仿真行为,添加仿真元素 :

[[UIGravityBehavior alloc]initWithItems:];//放进去的是数组

3.将物理仿真行为添加到仿真器中 :

[anim addBehavior:gravity]

 

我的记忆方法(仅仅是记忆方法,如果能记住就不要看记忆方法了) :

仿真器   -->  大海        

仿真行为 -->  船 

View     -->  人

创建一个仿真器(大海),创建仿真行为(船),船上要有人(View),把船添加到大海中去,就可以翱翔了。

 

UIDynamic提供了几个物理仿真行为

1.重力行为: UIGravityBehavior

2.碰撞行为:UICollisionBehavior

3.捕追行为 : UISnapBehavior

4.推动行为 : UIPushBehavior

5.附着行为 : UIAttachmentBehavior 

6.动力元素行为 : UIDynamicItemBehavior

使用例子 : 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    UIDynamicAnimator * animator = [[UIDynamicAnimator alloc]initWithReferenceView:self.containView];

    self.animator = animator;//注意一定要持有物理仿真器,不然还没开始执行,animator就被释放

    UIGravityBehavior * behavior0 = [[UIGravityBehavior alloc]initWithItems:@[self.testView]];

    UICollisionBehavior * behavior1 = [[UICollisionBehavior alloc]initWithItems:@[self.testView]];

    behavior1.translatesReferenceBoundsIntoBoundary = YES;//把view的bounds设为边界

    [animator addBehavior:behavior0];

    [animator addBehavior:behavior1];

}

相关知识点及注意点 : 

(1)任何遵守UIDynamicItem协议的对象都可以进行仿真行为,因为UIView默认添加了UIDynamic协议,所以所有的UI控件都能物理仿真

(2)所有的仿真行为可以独立进行也可以同时使用 ,所有的物理仿真行为都继承来自UIDynamicBehavior

 (3) 吸附行为默认只能吸附一次,如果是多次吸附必须从仿真器中移除在重新添加

原文地址:https://www.cnblogs.com/TangKaiFu/p/4447496.html