•CoreAnimation是一組很是強大的動畫處理API,使用它能作出很是炫麗的動畫效果,並且每每是事半功倍,使用它須要先添加QuartzCore.framework和引入對應的框架<QuartzCore/QuartzCore.h>
•CALayer中不少屬性均可以經過CAAnimation實現動畫效果,包括:opacity、position、transform、bounds、contents等(能夠在API文檔中搜索:CALayerAnimatable Properties)
•經過調用CALayer的addAnimation:forKey增長動畫到層(CALayer)中,這樣就能觸發動畫了。經過調用removeAnimationForKey能夠中止層中的動畫
•全部動畫對象的父類,負責控制動畫的持續時間和速度,是個抽象類,不能直接使用,應該使用它具體的子類
•屬性解析:(紅色表明來自CAMediaTiming協議的屬性)
duration:動畫的持續時間
repeatCount:動畫的重複次數
repeatDuration:動畫的重複時間
removedOnCompletion:默認爲YES,表明動畫執行完畢後就從圖層上移除,圖形會恢復到動畫執行前的狀態。若是想讓圖層保持顯示動畫執行後的狀態,那就設置爲NO,不過還要設置fillMode爲kCAFillModeForwards
fillMode:決定當前對象在非active時間段的行爲.好比動畫開始以前,動畫結束以後
beginTime:能夠用來設置動畫延遲執行時間,若想延遲2s,就設置爲CACurrentMediaTime()+2,CACurrentMediaTime()爲圖層的當前時間
timingFunction:速度控制函數,控制動畫運行的節奏
delegate:動畫代理
(2)CAPropertyAnimation
•是CAAnimation的子類,也是個抽象類,要想建立動畫對象,應該使用它的兩個子類:CABasicAnimation和CAKeyframeAnimation
•屬性解析:
keyPath:經過指定CALayer的一個屬性名稱爲keyPath(NSString類型),而且對CALayer的這個屬性的值進行修改,達到相應的動畫效果。好比,指定@」position」爲keyPath,就修改CALayer的position屬性的值,以達到平移的動畫效果
(3)CABasicAnimation
•CAPropertyAnimation的子類
•屬性解析:
fromValue:keyPath相應屬性的初始值
toValue:keyPath相應屬性的結束值
•隨着動畫的進行,在長度爲duration的持續時間內,keyPath相應屬性的值從fromValue漸漸地變爲toValue
•若是fillMode=kCAFillModeForwards和removedOnComletion=NO,那麼在動畫執行完畢後,圖層會保持顯示動畫執行後的狀態。但在實質上,圖層的屬性值仍是動畫執行前的初始值,並無真正被改變。好比,CALayer的position初始值爲(0,0),CABasicAnimation的fromValue爲(10,10),toValue爲(100,100),雖然動畫執行完畢後圖層保持在(100,100)這個位置,實質上圖層的position仍是爲(0,0)
(4)CAKeyframeAnimation
•CApropertyAnimation的子類,跟CABasicAnimation的區別是:CABasicAnimation只能從一個數值(fromValue)變到另外一個數值(toValue),而CAKeyframeAnimation會使用一個NSArray保存這些數值
•屬性解析:
values:就是上述的NSArray對象。裏面的元素稱爲」關鍵幀」(keyframe)。動畫對象會在指定的時間(duration)內,依次顯示values數組中的每個關鍵幀
path:能夠設置一個CGPathRef\CGMutablePathRef,讓層跟着路徑移動。path只對CALayer的anchorPoint和position起做用。若是你設置了path,那麼values將被忽略
keyTimes:能夠爲對應的關鍵幀指定對應的時間點,其取值範圍爲0到1.0,keyTimes中的每個時間值都對應values中的每一幀.當keyTimes沒有設置的時候,各個關鍵幀的時間是平分的
•CABasicAnimation可看作是最多隻有2個關鍵幀的CAKeyframeAnimation
(5)CAAnimationGroup
•CAAnimation的子類,能夠保存一組動畫對象,將CAAnimationGroup對象加入層後,組中全部動畫對象能夠同時併發運行
•屬性解析:
uanimations:用來保存一組動畫對象的NSArray
•默認狀況下,一組動畫對象是同時運行的,也能夠經過設置動畫對象的beginTime屬性來更改動畫的開始時間
(6)CATransition
•CAAnimation的子類,用於作轉場動畫,可以爲層提供移出屏幕和移入屏幕的動畫效果。iOS比MacOS X的轉場動畫效果少一點
•UINavigationController就是經過CATransition實現了將控制器的視圖推入屏幕的動畫效果
•屬性解析:
startProgress:動畫起點(在總體動畫的百分比)
endProgress:動畫終點(在總體動畫的百分比)