關(guān)于物理效果的動(dòng)畫引擎UIDynamic介紹(轉(zhuǎn)自我的微博)

這幾天事情超多,實(shí)在很難靜下心來(lái)研究一個(gè)東西矗烛,但是這個(gè)類我也是關(guān)注好久了如筛,早就想總結(jié)下寫出來(lái), 可能這篇文章并不會(huì)像之前額那樣那么詳細(xì)午绳,按理說(shuō)寫動(dòng)畫相關(guān)的東西應(yīng)該是配gif的,但是真的是沒有心思再去搞那些東西映之,代碼并不難箱叁,大家可以照著代碼寫一下看下效果。
為了實(shí)現(xiàn)動(dòng)力UI惕医,需要注冊(cè)一套UI行為的體系,之后UI便會(huì)按照預(yù)先的設(shè)定進(jìn)行運(yùn)動(dòng)了算色。我們應(yīng)該了解的新的基本概念有如下四個(gè):
UIDynamicItem:用來(lái)描述一個(gè)力學(xué)物體的狀態(tài)抬伺,其實(shí)就是實(shí)現(xiàn)了UIDynamicItem委托的對(duì)象,或者抽象為有面積有旋轉(zhuǎn)的質(zhì)點(diǎn)灾梦; 簡(jiǎn)單的說(shuō)就是一個(gè)控件峡钓,就是你想往誰(shuí)上面加動(dòng)畫,這個(gè)就是誰(shuí)若河。
UIDynamicBehavior:動(dòng)力行為的描述能岩,用來(lái)指定UIDynamicItem應(yīng)該如何運(yùn)動(dòng),即定義適用的物理規(guī)則萧福。一般我們使用這個(gè)類的子類對(duì)象來(lái)對(duì)一組UIDynamicItem應(yīng)該遵守的行為規(guī)則進(jìn)行描述拉鹃;簡(jiǎn)單的說(shuō)就是動(dòng)畫效果,這個(gè)類是動(dòng)畫效果的一個(gè)父類,它的子類大家可以用運(yùn)行時(shí)的方法輸出一下看一下膏燕,或者一會(huì)看我介紹钥屈,一個(gè)子類是一個(gè)效果,各種效果比如重力啊碰撞啊坝辫,鏈接啊之類的篷就。
UIDynamicAnimator;動(dòng)畫的播放者近忙,動(dòng)力行為(UIDynamicBehavior)的容器竭业,添加到容器內(nèi)的行為將發(fā)揮作用;
ReferenceView:等同于力學(xué)參考系及舍,如果你的初中物理不是語(yǔ)文老師教的話未辆,我想你知道這是啥..只有當(dāng)想要添加力學(xué)的UIView是ReferenceView的子view時(shí),動(dòng)力UI才發(fā)生作用击纬。

     下面看下我們給一個(gè)button加一個(gè)重力下墜的動(dòng)畫 使用self.View做參考系來(lái)建立動(dòng)畫![](http://upload-images.jianshu.io/upload_images/1792635-cb518386e6a4a943.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

然后

你可以吧這里航代碼寫到button的點(diǎn)擊事件中鼎姐,這樣你一點(diǎn)就會(huì)下墜。很簡(jiǎn)單吧更振。

再看下一個(gè)碰撞
我這里寫碰撞動(dòng)畫的時(shí)候用了兩個(gè)button炕桨,其實(shí)大家可以猜到我是讓兩個(gè)button來(lái)碰撞的,碰撞的過(guò)程中也是會(huì)走代理方法的肯腕,開始碰撞啊献宫,碰撞結(jié)束啊之類的。最后那句話的意思是吧他的參考系(這里是的self.view)的邊界作為碰撞邊界实撒,就是說(shuō)這段代碼運(yùn)行后這兩個(gè) 這兩控件撞到屏幕self.view的邊框會(huì)發(fā)生物理的碰撞反彈效果姊途。想這樣(點(diǎn)我開始那個(gè)按鈕)
除了重力和碰撞,iOS SDK還預(yù)先幫我們實(shí)現(xiàn)了一些其他的有用的物理行為知态,它們包括

UIAttachmentBehavior 描述一個(gè)view和一個(gè)錨相連接的情況捷兰,也可以描述view和view之間的連接。attachment描述的是兩個(gè)點(diǎn)之間的連接情況负敏,可以通過(guò)設(shè)置來(lái)模擬無(wú)形變或者彈性形變的情況(再次希望你還記得這些概念贡茅,簡(jiǎn)單說(shuō)就是木棒連接和彈簧連接兩個(gè)物體)。當(dāng)然其做,在多個(gè)物體間設(shè)定多個(gè)顶考;UIAttachmentBehavior,就可以模擬多物體連接了..有了這些妖泄,似乎可以做個(gè)老鷹捉小雞的游戲了- -…
UISnapBehavior 將UIView通過(guò)動(dòng)畫吸附到某個(gè)點(diǎn)上驹沿。初始化的時(shí)候設(shè)定一下UISnapBehavior的initWithItem:snapToPoint:就行,因?yàn)锳PI非常簡(jiǎn)單蹈胡,視覺效果也很棒渊季,估計(jì)它是今后非游戲app里會(huì)被最常用的效果之一了朋蔫;
UIPushBehavior 可以為一個(gè)UIView施加一個(gè)力的作用,這個(gè)力可以是持續(xù)的梭域,也可以只是一個(gè)沖量斑举。當(dāng)然我們可以指定力的大小,方向和作用點(diǎn)等等信息病涨。
UIDynamicItemBehavior 其實(shí)是一個(gè)輔助的行為富玷,用來(lái)在item層級(jí)設(shè)定一些參數(shù),比如item的摩擦既穆,阻力赎懦,角阻力,彈性密度和可允許的旋轉(zhuǎn)等等

其實(shí)流程很簡(jiǎn)單創(chuàng)建animator 然后創(chuàng)建behivator 設(shè)置behivator屬性 然后animator addBehivator 幻工。就是這個(gè)么流程励两。寫代碼要學(xué)會(huì)舉一反三觸類旁通。 這篇博客寫的比較急囊颅,但是總體上來(lái)說(shuō)功能沒問(wèn)題当悔,細(xì)節(jié)上有什么問(wèn)題,大家找我一起交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踢代,一起剝皮案震驚了整個(gè)濱河市盲憎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胳挎,老刑警劉巖饼疙,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異慕爬,居然都是意外死亡窑眯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門医窿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磅甩,“玉大人,你說(shuō)我怎么就攤上這事姥卢【硪” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵隔显,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我饵逐,道長(zhǎng)括眠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任倍权,我火速辦了婚禮掷豺,結(jié)果婚禮上捞烟,老公的妹妹穿的比我還像新娘。我一直安慰自己当船,他們只是感情好题画,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著德频,像睡著了一般苍息。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壹置,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天竞思,我揣著相機(jī)與錄音,去河邊找鬼钞护。 笑死盖喷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的难咕。 我是一名探鬼主播课梳,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼余佃!你這毒婦竟也來(lái)了暮刃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咙冗,失蹤者是張志新(化名)和其女友劉穎沾歪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雾消,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灾搏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了立润。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狂窑。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桑腮,靈堂內(nèi)的尸體忽然破棺而出泉哈,到底是詐尸還是另有隱情,我是刑警寧澤破讨,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布丛晦,位于F島的核電站,受9級(jí)特大地震影響提陶,放射性物質(zhì)發(fā)生泄漏烫沙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一隙笆、第九天 我趴在偏房一處隱蔽的房頂上張望锌蓄。 院中可真熱鬧升筏,春花似錦、人聲如沸瘸爽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剪决。三九已至灵汪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昼捍,已是汗流浹背识虚。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妒茬,地道東北人担锤。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乍钻,于是被迫代替她去往敵國(guó)和親肛循。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)银择、插件多糠、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評(píng)論 4 62
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,735評(píng)論 25 707
  • 周三工作日的晚上我看了一場(chǎng)周杰倫的“地表最強(qiáng)”演唱會(huì),這是三天前才買到良心黃牛票浩考。我的第一場(chǎng)演唱會(huì)是Westlif...
    939c6cb83cfa閱讀 249評(píng)論 0 0
  • 向陽(yáng)之葵 一 六月夹孔。氣溫三十七度。顧則笑坐在床上析孽,透過(guò)窗看著剛剛下過(guò)雨的世界搭伤,感覺到一絲...
    送你一株金魚草閱讀 303評(píng)論 0 0
  • 不知不覺間已經(jīng)結(jié)婚四年三個(gè)月零六天,一直以來(lái)對(duì)媳婦都有挺多的不滿意袜瞬,就是感覺雖然已經(jīng)結(jié)婚了但是她一直沒有進(jìn)入一個(gè)作...
    Kelany閱讀 289評(píng)論 0 0