码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-04-22 15:11:54      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

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

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!