大赏iOS Developer程序员

UIKit Dynamics (二) 重力

2017-05-09  本文已影响69人  bewils

UIKit Dynamics (一) 概述
UIKit Dynamics (二) 重力
UIKit Dynamics (三) 碰撞
UIKit Dynamics (四) 急停
UIKit Dynamics (五) 施力

在这个系列的第二篇文章中主要讨论最简单的重力效果。

UIGravityBehavior

这个类提供了模拟重力的效果,可以通过修改大小和方向来实现不同的重力效果。物理学中的重力加速度是 9.80665 m/s2,而 UIKit 中将这个加速度进行了转换以适应屏幕像素的计算,在 UIKit 中的重力加速的是 1000 points/second2。默认的方向是 UIKit 坐标系的下方向,方向向量是 (0.0, 1.0)。

使用

利用这个类通过几行代码就可以非常方便地实现模拟重力的效果。

_box.frame = CGRectMake(10, 10, 100, 100);
  
_container.clipsToBounds = YES;
// 创建 animator 动画效果的容器
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:_container];
// 创建重力效果,并将 _box 添加进来使 _box 遵循重力规则
_gBehavior = [[UIGravityBehavior alloc] initWithItems:@[_box]];
[_animator addBehavior:_gBehavior];

配置

UIGravityBehavior 主要有一下属性和方法:

// 重力向量方向,默认 (0.0, 1.0)
@property (readwrite, nonatomic) CGVector gravityDirection;
// 重力弧度方向,默认 M_PI_2
@property (readwrite, nonatomic) CGFloat angle;
// 重力大小,默认 1,即 1000 points/second^2
@property (readwrite, nonatomic) CGFloat magnitude;
// 同时设置上面两个属性
- (void)setAngle:(CGFloat)angle magnitude:(CGFloat)magnitude;

本文的 demo 是 UIGravityBehavior 页面。可以通过拖拽项目中的滑块来调节重力的角度和大小,取值分别为 0~2*PI 和 1~11,来尝试各种不同的效果。

Gravity Behavior
上一篇下一篇

猜你喜欢

热点阅读