UIKit Dynamics (一) 概述
UIKit Dynamics (二) 重力
UIKit Dynamics (三) 碰撞
UIKit Dynamics (四) 急停
UIKit Dynamics (五) 施力
在這個(gè)系列的第二篇文章中主要討論最簡(jiǎn)單的重力效果。
UIGravityBehavior
這個(gè)類提供了模擬重力的效果归斤,可以通過(guò)修改大小和方向來(lái)實(shí)現(xiàn)不同的重力效果。物理學(xué)中的重力加速度是 9.80665 m/s2,而 UIKit 中將這個(gè)加速度進(jìn)行了轉(zhuǎn)換以適應(yīng)屏幕像素的計(jì)算壳猜,在 UIKit 中的重力加速的是 1000 points/second2滑凉。默認(rèn)的方向是 UIKit 坐標(biāo)系的下方向畅姊,方向向量是 (0.0, 1.0)。
使用
利用這個(gè)類通過(guò)幾行代碼就可以非常方便地實(shí)現(xiàn)模擬重力的效果朱嘴。
_box.frame = CGRectMake(10, 10, 100, 100);
_container.clipsToBounds = YES;
// 創(chuàng)建 animator 動(dòng)畫(huà)效果的容器
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:_container];
// 創(chuàng)建重力效果萍嬉,并將 _box 添加進(jìn)來(lái)使 _box 遵循重力規(guī)則
_gBehavior = [[UIGravityBehavior alloc] initWithItems:@[_box]];
[_animator addBehavior:_gBehavior];
配置
UIGravityBehavior 主要有一下屬性和方法:
// 重力向量方向壤追,默認(rèn) (0.0, 1.0)
@property (readwrite, nonatomic) CGVector gravityDirection;
// 重力弧度方向行冰,默認(rèn) M_PI_2
@property (readwrite, nonatomic) CGFloat angle;
// 重力大小悼做,默認(rèn) 1撵割,即 1000 points/second^2
@property (readwrite, nonatomic) CGFloat magnitude;
// 同時(shí)設(shè)置上面兩個(gè)屬性
- (void)setAngle:(CGFloat)angle magnitude:(CGFloat)magnitude;
本文的 demo 是 UIGravityBehavior 頁(yè)面啡彬∈樱可以通過(guò)拖拽項(xiàng)目中的滑塊來(lái)調(diào)節(jié)重力的角度和大小,取值分別為 0~2*PI 和 1~11腾誉,來(lái)嘗試各種不同的效果利职。