Core Animation

繼承結(jié)構(gòu).png

CAAnimation 繼承關(guān)系:

 - CAAnimationGroup
 - CAPropertyAnimation 
     *  CABasicAnimation 
     *  CAKeyframeAnimation 
 
 - CATransition 
 - Catransaction (CATransaction 事務(wù)類,用于begin&commit 方法制作動(dòng)畫(huà)的)
  • CALayer 屬性


layer屬性

對(duì)象是CALayer類型的,直接修改支持隱性動(dòng)畫(huà)的屬性,就會(huì)有動(dòng)畫(huà)效果

直接修改UIView類型的屬性,沒(méi)有動(dòng)畫(huà)效果

  • UIView關(guān)聯(lián)的圖層禁用了隱式動(dòng)畫(huà),對(duì)這種圖層做動(dòng)畫(huà)的唯一辦法就是使用UIView的動(dòng)畫(huà)函數(shù)(而不是依賴CATransaction),或者繼承UIView
    ,并覆蓋-actionForLayer:forKey:方法,或者直接創(chuàng)建一個(gè)顯式動(dòng)畫(huà)

  • 對(duì)于單獨(dú)存在的圖層,我們可以通過(guò)實(shí)現(xiàn)圖層的-actionForLayer:forKey:委托方法,或者提供一個(gè)actions字典來(lái)控制隱式動(dòng)畫(huà)。


一. CAPropertyAnimation

1.1 CABasicAnimation
1.2 CAKeyframeAnimation

二. CATransition

****做轉(zhuǎn)場(chǎng)動(dòng)畫(huà)效果****

三. CATransaction

CATransaction用來(lái)管理事務(wù)

  • 事務(wù)實(shí)際上是Core Animation用來(lái)包含一系列屬性動(dòng)畫(huà)集合的機(jī)制,任何用指定事務(wù)去改變可以做動(dòng)畫(huà)的圖層屬性都不會(huì)立刻發(fā)生變化,而是當(dāng)事務(wù)一旦*提交*的時(shí)候開(kāi)始用一個(gè)動(dòng)畫(huà)過(guò)渡到新值。

  • UIView有兩個(gè)方法,

    • beginAnimations:context:
    • +commitAnimations
  • CATransaction 也類似的

    • +begin
    • +commit

他們方法類似,實(shí)際上在+beginAnimations:context:和+commitAnimations
之間所有視圖或者圖層屬性的改變而做的動(dòng)畫(huà)都是由于設(shè)置了CATransaction
的原因

注: 這兩種動(dòng)畫(huà)使用方式差不多,原因是他們?cè)聿畈欢?/em>


圖層動(dòng)畫(huà)的本質(zhì)就是將圖層內(nèi)部的內(nèi)容轉(zhuǎn)化為位圖經(jīng)硬件操作形成一種動(dòng)畫(huà)效果,其實(shí)圖層本身并沒(méi)有任何的變化

  • 動(dòng)畫(huà)完成之后圖層還是在原來(lái)的顯示位置沒(méi)有任何變化,如果這個(gè)圖層在一個(gè)UIView中你會(huì)發(fā)現(xiàn)在UIView移動(dòng)過(guò)程中你要觸發(fā)UIView的點(diǎn)擊事件也只能點(diǎn)擊原來(lái)的位置(即使它已經(jīng)運(yùn)動(dòng)到了別的位置),因?yàn)樗奈恢脧膩?lái)沒(méi)有變過(guò)。
最后編輯于
?著作權(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)容