
CAAnimation 繼承關(guān)系:
- CAAnimationGroup
- CAPropertyAnimation
* CABasicAnimation
* CAKeyframeAnimation
- CATransition
- Catransaction (CATransaction 事務(wù)類,用于begin&commit 方法制作動(dòng)畫(huà)的)
-
CALayer 屬性


對(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ò)。