這幾天事情超多,實(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)單吧更振。
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)題,大家找我一起交流