Core Animation(核心動畫)是一組功能強大、效果華麗的動畫API,無論在iOS系統(tǒng)或者在你開發(fā)的App中,都有大量應(yīng)用。

可以看到,核心動畫位于UIKit的下一層,相比UIView動畫,它可以實現(xiàn)更復(fù)雜的動畫效果。
核心動畫作用在CALayer上。每一個View都有其對應(yīng)的layer,這個layer是root layer.
給view加上動畫,本質(zhì)上是對其layer進(jìn)行操作,layer包含了各種支持動畫的屬性,動畫則包含了屬性變化的值、變化的速度、變化的時間等等,兩者結(jié)合產(chǎn)生動畫的過程。
核心動畫的優(yōu)點就是:性能強大 使用硬件加速 可以同時向多個圖層添加不同的動畫效果,接口易用,只需要少量的代碼可以實現(xiàn)復(fù)雜的動畫效果。運行在后臺的線程中 在動畫過程中可以響應(yīng)交互事件。
CAAnimation是所有動畫對象的父類負(fù)責(zé)控制動畫的時間 速度 和時間曲線,是一個抽象類 不能直接使用。
CAPropertyAnimation:CAAnimation的子類 支持動畫地顯示圖層的keyPath,一般不直接使用。
ios 9.0之后新增CASpringAnimation類 它實現(xiàn)彈簧效果動畫,是CABasicAnimation的子類。
核心動畫類中可以直接使用的類有:
CABasicAnimation
CAKeyframeAnimation
{重要屬性:
type:過渡動畫的類型
type的enum值如下:
kCATransitionFade 漸變
kCATransitionMoveIn 覆蓋
kCATransitionPush 推出
kCATransitionReveal 揭開
subtype的enum值如下:
kCATransitionFromRight 從右邊
kCATransitionFromLeft 從左邊
kCATransitionFromTop 從頂部
kCATransitionFromBottom 從底部
}
CATransition
CAAnimationGroup
CASpringAnimation
核心動畫類的核心方法
初始化 設(shè)置動畫的相關(guān)屬性 動畫的添加和移除
keypath 可以指定keypath為CALayer的屬性值,并對它的值進(jìn)行修改,以達(dá)到對應(yīng)的動畫效果,需要注意的是部分屬性是不支持動畫效果的
timeFunction:動畫的時間節(jié)奏控制
timingFunctionName的enum值如下:
kCAMediaTimingFunctionLinear 勻速
kCAMediaTimingFunctionEaseIn 慢進(jìn)
kCAMediaTimingFunctionEaseOut 慢出
kCAMediaTimingFunctionEaseInEaseOut 慢進(jìn)慢出
kCAMediaTimingFunctionDefault 默認(rèn)值(慢進(jìn)慢出)
CAKeyframeAnimation 可以設(shè)定keyPath起點、中間關(guān)鍵點(不止一個)、終點的值,每一幀所對應(yīng)的時間,動畫會沿著設(shè)定點進(jìn)行移動。
CAKeyframeAnimation的重要屬性:values關(guān)鍵幀數(shù)組對象 里面每一個元素即為一個關(guān)鍵幀 動畫會在duration時間內(nèi)執(zhí)行數(shù)組中每一個關(guān)鍵幀的動畫。
path 動畫路徑對象 可以指定一個路徑,在執(zhí)行動畫時會沿著路徑移動,path在動畫中會影響視圖的position。
CATransition 轉(zhuǎn)場動畫, 蘋果私有api 使用需注意可能被打回
ani.type = @"cube";//--立方體
ani.type = @"suckEffect";// 吸走的效果
ani.type = @"oglFlip";//When subType is "fromLeft" or "fromRight", it's the official one.//前后翻轉(zhuǎn)效果
ani.type = @"rippleEffect";//波紋效果
ani.type = @"pageCurl";//翻頁起來
ani.type = @"pageUnCurl";//翻頁下來
ani.type = @"cameraIrisHollowOpen ";//鏡頭開
ani.type = @"cameraIrisHollowClose ";//鏡頭關(guān)
CASpringAnimation 是ios9新加入的動畫類型,是CABasicAnimation的子類,用于實現(xiàn)彈簧動畫。
CASpringAnimation的重要屬性:
mass:質(zhì)量(影響彈簧的慣性,質(zhì)量越大,彈簧慣性越大,運動的幅度越大)
stiffness:彈性系數(shù)(彈性系數(shù)越大,彈簧的運動越快)
damping:阻尼系數(shù)(阻尼系數(shù)越大,彈簧的停止越快)
initialVelocity:初始速率(彈簧動畫的初始速度大小,彈簧運動的初始方向與初始速率的正負(fù)一致,若初始速率為0,表示忽略該屬性)
settlingDuration:結(jié)算時間(根據(jù)動畫參數(shù)估算彈簧開始運動到停止的時間,動畫設(shè)置的時間最好根據(jù)此時間來設(shè)置)
CAAnimationGroup
使用Group可以將多個動畫合并一起加入到層中,Group中所有動畫并發(fā)執(zhí)行,可以方便地實現(xiàn)需要多種類型動畫的場景