UIKit Dynamics (二) 重力

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)畫效果的容器
_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)嘗試各種不同的效果。

Gravity Behavior
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容