免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2019 | 回复: 0
打印 上一主题 下一主题

[iOS] IOS开发-UIDynamic(物理仿真)简单使用 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-06-12 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-11 09:44 |只看该作者 |倒序浏览
UIDynamic是从IOS7开始引入的一种新技术,隶属于UIKit框架,我们可以认为是一种物理引擎能模拟和仿真现实生活中的物理现象,比如重力,弹性碰撞等。

可以让开发人员远离物理公式的情况下,实现一些物理仿真效果。

这里简单介绍一下重力,碰撞,捕捉的用法。

先介绍一下使用的大致步骤

创建物理仿真器
创建相应的物理仿真行为
将物理仿真行为添加到物理仿真器

一,重力与碰撞
提前在StoryBoard准备两个UIView,一个红色,一个蓝色。蓝色在红色的下方,保证红色下落能碰到蓝色的view。
  1. //创建物理仿真器
  2. 2     UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
  3. 3     self.animator = animator;  //强引用animator,否则代码块执行完成后,将被释放
  4. 4     
  5. 5     //创建重力行为
  6. 6     UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[self.redView]];
  7. 7     
  8. 8     //设置一些属性(可以不设置,不设则都为默认)
  9. 9     gravityBehavior.gravityDirection = CGVectorMake(0, 1);  //重力方向
  10. 10     gravityBehavior.angle = M_PI*0.5;  //重力方向
  11. 11     gravityBehavior.magnitude = 0.5; //重力加速度,1代表加速度是(每秒100个点)
  12. 12     
  13. 13     //把重力行为行为添加到仿真器
  14. 14     [animator addBehavior:gravityBehavior];
  15. 15     
  16. 16     
  17. 17     //创建碰撞行为
  18. 18     UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.redView,self.blueView]];
  19. 19     
  20. 20     //设置碰撞边界,不设置就会飞出屏幕,设置就会在屏幕边框处产生碰撞效果
  21. 21     collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
  22. 22     
  23. 23     //将碰撞行为加入物理仿真器
  24. 24     [animator addBehavior:collisionBehavior];
  25. 复制代码
复制代码
代码执行后,就能看到红色的view下落,并撞击蓝色的View了。
二,捕捉行为
  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. 2 {
  3. 3     //获取触摸点
  4. 4     UITouch *touch = [touches anyObject];
  5. 5     CGPoint point = [touch locationInView:touch.view];
  6. 6     
  7. 7     //创建仿真仿真器
  8. 8     UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
  9. 9     self.animator = animator;  //仿真器
  10. 10     
  11. 11     //创建捕捉行为
  12. 12     UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:self.redView snapToPoint:point];
  13. 13     
  14. 14     //设置反弹系数(反弹幅度越大,值越大,反弹幅度越小)
  15. 15     snapBehavior.damping = 0.5;
  16. 16     
  17. 17     //将行为添加到仿真器
  18. 18     [animator addBehavior:snapBehavior];
  19. 19     
  20. 20 }
复制代码
运行一下,点击屏幕,可以发现,红色的view就很调皮的跟着你的手指移动啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP