IOS开发-UIDynamic(物理仿真)简单使用
2015-06-10 09:58
555 查看
UIDynamic是从IOS7开始引入的一种新技术,隶属于UIKit框架,我们可以认为是一种物理引擎能模拟和仿真现实生活中的物理现象,比如重力,弹性碰撞等。
可以让开发人员远离物理公式的情况下,实现一些物理仿真效果。
这里简单介绍一下重力,碰撞,捕捉的用法。
先介绍一下使用的大致步骤
创建物理仿真器
创建相应的物理仿真行为
将物理仿真行为添加到物理仿真器
一,重力与碰撞
提前在StoryBoard准备两个UIView,一个红色,一个蓝色。蓝色在红色的下方,保证红色下落能碰到蓝色的view。
代码执行后,就能看到红色的view下落,并撞击蓝色的View了。
二,捕捉行为
运行一下,点击屏幕,可以发现,红色的view就很调皮的跟着你的手指移动啦
可以让开发人员远离物理公式的情况下,实现一些物理仿真效果。
这里简单介绍一下重力,碰撞,捕捉的用法。
先介绍一下使用的大致步骤
创建物理仿真器
创建相应的物理仿真行为
将物理仿真行为添加到物理仿真器
一,重力与碰撞
提前在StoryBoard准备两个UIView,一个红色,一个蓝色。蓝色在红色的下方,保证红色下落能碰到蓝色的view。
//创建物理仿真器 UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; self.animator = animator; //强引用animator,否则代码块执行完成后,将被释放 //创建重力行为 UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[self.redView]]; //设置一些属性(可以不设置,不设则都为默认) gravityBehavior.gravityDirection = CGVectorMake(0, 1); //重力方向 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就很调皮的跟着你的手指移动啦
相关文章推荐
- UESTC 490 Swap Game
- UI之UINavigationController
- "mkimage" command not found - U-Boot images will not be built
- Bluetooth---Android蓝牙4.0的数据通讯
- UI设计规范
- Bluetooth Lowe Energy
- IOS UIView方法详细解析
- 详细整理:UITableView优化技巧
- OpenWrt系统安全改进<四> --- Web UI权限分级
- 6.5 UITabBarController
- NSURLRequest的官方文档
- NSURLRequest详解
- 天题系列: Distinct Subsequences
- UICollectionView的基本使用
- 一个强大的LogParser的UI工具--日志分析工具
- DuiVision开发教程(16)-区域控件
- 【ios开发学习 - 第四课】UIButton使用
- IOS笔记045-UIDatePicker和UIPickerView
- 【ios开发学习 - 第三课】UITextField使用
- 基于数组实现Java 自定义Queue队列及应用