UIKit Dynamics (一) 概述
UIKit Dynamics (二) 重力
UIKit Dynamics (三) 碰撞
UIKit Dynamics (四) 急停
UIKit Dynamics (五) 施力
在這個系列的第二篇文章中主要討論最簡單的重力效果。
UIGravityBehavior
這個類提供了模擬重力的效果,可以通過修改大小和方向來實現(xiàn)不同的重力效果。物理學中的重力加速度是 9.80665 m/s2,而 UIKit 中將這個加速度進行了轉換以適應屏幕像素的計算,在 UIKit 中的重力加速的是 1000 points/second2。默認的方向是 UIKit 坐標系的下方向,方向向量是 (0.0, 1.0)。
使用
利用這個類通過幾行代碼就可以非常方便地實現(xiàn)模擬重力的效果。
_box.frame = CGRectMake(10, 10, 100, 100);
_container.clipsToBounds = YES;
// 創(chuàng)建 animator 動畫效果的容器
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:_container];
// 創(chuàng)建重力效果,并將 _box 添加進來使 _box 遵循重力規(guī)則
_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 頁面??梢酝ㄟ^拖拽項目中的滑塊來調(diào)節(jié)重力的角度和大小,取值分別為 0~2*PI 和 1~11,來嘗試各種不同的效果。

Gravity Behavior