iOS UIKit動力學(xué)(七)其它動力學(xué)配置(UIDynamicItemBehavior)

導(dǎo)語

UIDynamicItemBehavior提供了更多前面幾種動力學(xué)行為不曾提到的動力學(xué)屬性。UIDynamicItemBehavior不像其它幾種行為具有比較具象的特征,它的作用更像是一個擴(kuò)展,可以為一個動態(tài)元素設(shè)置更多較為具體的動力學(xué)屬性。

構(gòu)造

UIDynamicItemBehavior * itemBehavior = 
[[UIDynamicItemBehavior alloc] initWithItems:@[_dynamicItem1View]];
-(instancetype)initWithItems:(NSArray<id <UIDynamicItem>> *)items NS_DESIGNATED_INITIALIZER;

屬性

  • 彈性系數(shù)
    用于碰撞行為的動態(tài)元素的彈性量。
@property (readwrite, nonatomic) CGFloat elasticity;

默認(rèn)值為0.0,有效范圍從0.0(沒有碰撞)1.0(完全碰撞)。

  • 摩擦系數(shù)
    用于兩個發(fā)生摩擦的動態(tài)元素。
@property (readwrite, nonatomic) CGFloat friction;

默認(rèn)值0.0(沒有摩擦),當(dāng)值為1.0時(shí),強(qiáng)烈摩擦。如果設(shè)置更高的摩擦,可以使用更高的數(shù)值。

  • 相對質(zhì)量密度
    用于動態(tài)元素相對密度。其連同動態(tài)元素大小,決定動態(tài)元素的有效質(zhì)量。其參與的動力學(xué)行為包括摩擦、碰撞、推動等...
@property (readwrite, nonatomic) CGFloat density;

默認(rèn)值為1.0

假設(shè)你有兩個具有相同密度但大小不同的動態(tài)元素:元素一尺寸為100x100像素點(diǎn)元素二尺寸為100x200像素點(diǎn)。
這個例子中,元素二的有效質(zhì)量是元素一的兩倍。
在一個彈性碰撞中,這些元素根據(jù)它們的相對質(zhì)量表現(xiàn)出自然的動量守恒。元素一密度為1.0,當(dāng)施加一個力(通過推動行為)1.0級時(shí),加速度為100點(diǎn)/s2

  • 線速度阻尼
    用于動態(tài)元素所受線速度阻尼大小。
@property (readwrite, nonatomic) CGFloat resistance;

默認(rèn)值是0.0。有效范圍從0.0(沒有速度阻尼)CGFLOAT_MAX(最大速度阻尼)。當(dāng)設(shè)置為1.0,動態(tài)元素會立馬停止就像沒有力量作用于它一樣。

  • 角速度阻尼
    用于動態(tài)元素所受角速度阻尼大小。
@property (readwrite, nonatomic) CGFloat angularResistance;

有效范圍從0.0CGFLOAT_MAX,值越大,角速度阻尼越大,旋轉(zhuǎn)減速越快,到停止。

  • 電荷
    好吧,物理太差,不懂,請高手指教,只能官翻了。
@property (readwrite, nonatomic) CGFloat charge NS_AVAILABLE_IOS(9_0);

電荷數(shù)確定動態(tài)元素與電場和磁場相互作用的程度。這個屬性值沒有單位,電磁場強(qiáng)度由你調(diào)控的適當(dāng)?shù)闹祦頉Q定。默認(rèn)值0.0

  • 是否固定
    用于指定動態(tài)元素是否固定在當(dāng)前位置。
@property (nonatomic, getter = isAnchored) BOOL anchored NS_AVAILABLE_IOS(9_0);

當(dāng)一個動態(tài)元素被設(shè)置為固定后,該元素參與碰撞,但不受碰撞影響,仿佛成為一個碰撞邊界。默認(rèn)值為NO。

方法

  • 添加一個動態(tài)元素,并設(shè)置它的角速度
-(void)addAngularVelocity:(CGFloat)velocity forItem:(id<UIDynamicItem>)item;

默認(rèn)值為0.0,單位弧度/秒。設(shè)置一個負(fù)值,減少一定角速度。

  • 添加一個動態(tài)元素,并設(shè)置它的線速度
-(void)addLinearVelocity:(CGPoint)velocity forItem:(id<UIDynamicItem>)item;

默認(rèn)值為0.0,單位點(diǎn)/秒。設(shè)置一個負(fù)值,減少一定線速度。

  • 獲得動態(tài)元素的角速度
-(CGFloat)angularVelocityForItem:(id<UIDynamicItem>)item;
  • 獲得動態(tài)元素的線速度
-(CGPoint)linearVelocityForItem:(id<UIDynamicItem>)item;

版權(quán)聲明:出自MajorLMJ技術(shù)博客的原創(chuàng)作品 ,轉(zhuǎn)載時(shí)必須注明出處及相應(yīng)鏈接!

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

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

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