UIDynamic是从IOS7开始引入的一种新技术,隶属于UIKit框架,我们可以认为是一种物理引擎能模拟和仿真现实生活中的物理现象,比如重力,弹性碰撞等。

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

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

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

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

一,重力与碰撞

提前在StoryBoard准备两个UIView,一个红色,一个蓝色。蓝色在红色的下方,保证红色下落能碰到蓝色的view。

     //创建物理仿真器
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.animator = animator; //强引用animator,否则代码块执行完成后,将被释放 //创建重力行为
UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[self.redView]]; //设置一些属性(可以不设置,不设则都为默认)
gravityBehavior.gravityDirection = CGVectorMake(, ); //重力方向
gravityBehavior.angle = M_PI*0.5; //重力方向
gravityBehavior.magnitude = 0.5; //重力加速度,1代表加速度是(每秒100个点) //把重力行为行为添加到仿真器
[animator addBehavior:gravityBehavior]; //创建碰撞行为
UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.redView,self.blueView]]; //设置碰撞边界,不设置就会飞出屏幕,设置就会在屏幕边框处产生碰撞效果
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES; //将碰撞行为加入物理仿真器
[animator addBehavior:collisionBehavior];

代码执行后,就能看到红色的view下落,并撞击蓝色的View了。

二,捕捉行为

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//获取触摸点
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:touch.view]; //创建仿真仿真器
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.animator = animator; //仿真器 //创建捕捉行为
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:self.redView snapToPoint:point]; //设置反弹系数(反弹幅度越大,值越大,反弹幅度越小)
snapBehavior.damping = 0.5; //将行为添加到仿真器
[animator addBehavior:snapBehavior]; }

运行一下,点击屏幕,可以发现,红色的view就很调皮的跟着你的手指移动啦

最新文章

  1. poj1873The Fortified Forest
  2. SQL is null函数
  3. android138 360 小火箭
  4. good mind
  5. ListView Video
  6. drupal7创始人root忘记密码的解决办法
  7. IWorkspaceFactory接口
  8. Android Studio 提高工作效率的奇技
  9. 简聊iOS支付集成(支付宝和微信支付)
  10. 拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket
  11. 20164319 刘蕴哲 Exp4:恶意代码分析
  12. Laravel API Tutorial: How to Build and Test a RESTful API
  13. 福州首届.NET开源社区技术交流会圆满成功
  14. 在PHP中使用CURL,“撩”服务器只需几行
  15. 绑定属性 - v-bind
  16. ubuntu.windows桌面远程ubuntu的方法(附带安装图形桌面--可选)
  17. Guava学习笔记(一):Maven
  18. ql常见面试题 受用了
  19. python目录和文件操作
  20. 《Python》hashlib模块、configparser模块、logging模块

热门文章

  1. 循环while do---while for循环
  2. Maven学习笔记一
  3. Java基础学习笔记二十三 Java核心语法之反射
  4. Git 建立仓库及常用命令速查表
  5. C语言程序设计(基础)- 第6周作业
  6. 《Effective Objective-C 2.0》摘要
  7. 201621123057 《Java程序设计》第13周学习总结
  8. Python strip()方法
  9. python 操作PostgreSQL
  10. mysql5.7在windows下面的主从复制配置