您的位置:首页 > 产品设计 > UI/UE

IOS开发-UIDynamic(物理仿真)简单使用

2015-06-10 09:58 555 查看
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(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就很调皮的跟着你的手指移动啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: