iOS開(kāi)發(fā)拓展篇—UIDynamic(簡(jiǎn)單介紹)

iOS開(kāi)發(fā)拓展篇—UIDynamic(簡(jiǎn)單介紹)

一、簡(jiǎn)單介紹

1.什么是UIDynamic

UIDynamic是從iOS 7開(kāi)始引入的一種新技術(shù),隸屬于UIKit框架

可以認(rèn)為是一種物理引擎,能模擬和仿真現(xiàn)實(shí)生活中的物理現(xiàn)象

如:重力、彈性碰撞等現(xiàn)象

2.物理引擎的價(jià)值

廣泛用于游戲開(kāi)發(fā),經(jīng)典成功案例是“憤怒的小鳥(niǎo)”

讓開(kāi)發(fā)人員可以在遠(yuǎn)離物理學(xué)公式的情況下,實(shí)現(xiàn)炫酷的物理仿真效果

提高了游戲開(kāi)發(fā)效率,產(chǎn)生更多優(yōu)秀好玩的物理仿真游戲

3.知名的2D物理引擎

Box2d

Chipmunk

二、使用步驟

要想使用UIDynamic來(lái)實(shí)現(xiàn)物理仿真效果,大致的步驟如下

(1)創(chuàng)建一個(gè)物理仿真器(順便設(shè)置仿真范圍)

(2)創(chuàng)建相應(yīng)的物理仿真行為(順便添加物理仿真元素)

(3)將物理仿真行為添加到物理仿真器中 ? 開(kāi)始仿真

三、相關(guān)說(shuō)明

1.三個(gè)概念

(1)誰(shuí)要進(jìn)行物理仿真?

物理仿真元素(Dynamic Item)

(2)執(zhí)行怎樣的物理仿真效果?怎樣的動(dòng)畫(huà)效果?

物理仿真行為(Dynamic Behavior)

(3)讓物理仿真元素執(zhí)行具體的物理仿真行為

物理仿真器(Dynamic Animator)

2.物理仿真元素

注意:

不是任何對(duì)象都能做物理仿真元素

不是任何對(duì)象都能進(jìn)行物理仿真

物理仿真元素要素:

任何遵守了UIDynamicItem協(xié)議的對(duì)象

UIView默認(rèn)已經(jīng)遵守了UIDynamicItem協(xié)議,因此任何UI控件都能做物理仿真

UICollectionViewLayoutAttributes類默認(rèn)也遵守UIDynamicItem協(xié)議

3.物理仿真行為

(1)UIDynamic提供了以下幾種物理仿真行為

UIGravityBehavior:重力行為

UICollisionBehavior:碰撞行為

UISnapBehavior:捕捉行為

UIPushBehavior:推動(dòng)行為

UIAttachmentBehavior:附著行為

UIDynamicItemBehavior:動(dòng)力元素行為

(2)物理仿真行為須知

上述所有物理仿真行為都繼承自UIDynamicBehavior

所有的UIDynamicBehavior都可以獨(dú)立進(jìn)行

組合使用多種行為時(shí),可以實(shí)現(xiàn)一些比較復(fù)雜的效果

4.物理仿真器

(1)物理仿真器須知

它可以讓物理仿真元素執(zhí)行物理仿真行為

它是UIDynamicAnimator類型的對(duì)象

(2)UIDynamicAnimator的初始化

  • (instancetype)initWithReferenceView:(UIView *)view;

view參數(shù):是一個(gè)參照視圖,表示物理仿真的范圍

5.物理仿真器的說(shuō)明

(1)UIDynamicAnimator的常見(jiàn)方法

- (void)addBehavior:(UIDynamicBehavior *)behavior;   //添加1個(gè)物理仿真行為

- (void)removeBehavior:(UIDynamicBehavior *)behavior;  //移除1個(gè)物理仿真行為

- (void)removeAllBehaviors;   //移除之前添加過(guò)的所有物理仿真行為

(2)UIDynamicAnimator的常見(jiàn)屬性

@property (nonatomic, readonly) UIView* referenceView; //參照視圖

@property (nonatomic, readonly, copy) NSArray* behaviors;//添加到物理仿真器中的所有物理仿真行為

@property (nonatomic, readonly, getter = isRunning) BOOL running;//是否正在進(jìn)行物理仿真

@property (nonatomic, assign) id <UIDynamicAnimatorDelegate> delegate;//代理對(duì)象(能監(jiān)聽(tīng)物理仿真器的仿真過(guò)程,比如開(kāi)始和結(jié)束)

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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