一、Core Animation簡介
* Core Animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理API,使用它能做出非常炫麗的動畫效果,而且往往是事半功倍。也就是說,使用少量的代碼就可以實現非常強大的功能。
* Core Animation可以用在Mac OS X和iOS平台。
* 喬幫主在2007年的WWDC大會上親自為你演示Core Animation的強大:點擊查看視頻
* Core Animation的動畫執行過程都是在后台操作的,不會阻塞主線程。
* 要注意的是,Core Animation是直接作用在CALayer上的,並非UIView。
二、Core Animation的使用步驟
1.使用它需要先添加QuartzCore.framework框架和引入主頭文件<QuartzCore/QuartzCore.h>
2.初始化一個CAAnimation對象,並設置一些動畫相關屬性
3.通過調用CALayer的addAnimation:forKey:方法增加CAAnimation對象到CALayer中,這樣就能開始執行動畫了
4.通過調用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫
三、CAAnimation
* 從前面的敘述可以看出,要想執行動畫,就必須初始化一個CAAnimation對象。
* 其實,一般情況下,我們使用的比較多的是CAAnimation的子類,因此,先大致看看CAAnimation的繼承結構:
黑線代表繼承,黑色文字代表類名,白色文字代表屬性。其中CAMediaTiming是一個協議(protocol)。
1.CAAnimation的常用屬性
* CAAnimation是所有動畫類的父類,但是它不能直接使用,應該使用它的子類
* 常見屬性有:
1> duration:動畫的持續時間
2> repeatCount:動畫的重復次數
3> timingFunction:控制動畫運行的節奏
- kCAMediaTimingFunctionLinear(線性):勻速,給你一個相對靜態的感覺
- kCAMediaTimingFunctionEaseIn(漸進):動畫緩慢進入,然后加速離開
- kCAMediaTimingFunctionEaseOut(漸出):動畫全速進入,然后減速的到達目的地
- kCAMediaTimingFunctionEaseInEaseOut(漸進漸出):動畫緩慢的進入,中間加速,然后減速的到達目的地。這個是默認的動畫行為。
4> delegate:動畫代理,用來監聽動畫的執行過程
代理對象需要實現的方法有:(這幾個方法被定義在某個分類中)
1 @interface NSObject (CAAnimationDelegate) 2 // 動畫開始執行的時候觸發這個方法 3 - (void)animationDidStart:(CAAnimation *)anim; 4 5 // 動畫執行完畢的時候觸發這個方法 6 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag; 7 @end
* 上面介紹的所有屬性都是屬於CAAnimation的,因此,CAAnimation的所有子類都能使用它們。
2.其他
* CAPropertyAnimation也是不能直接使用的,也要使用它的子類
* 所以,能用的動畫類只剩下4個:CABasicAnimation、CAKeyframeAnimation、CATransition、CAAnimationGroup
四、CAPropertyAnimation
* CAPropertyAnimation是CAAnimation的子類,但是不能直接使用,要想創建動畫對象,應該使用它的兩個子類:CABasicAnimation和CAKeyframeAnimation
* 它有個NSString類型的keyPath屬性,你可以指定CALayer的某個屬性名為keyPath,並且對CALayer的這個屬性的值進行修改,達到相應的動畫效果。比如,指定@"position"為keyPath,就會修改CALayer的position屬性的值,以達到平移的動畫效果
* 因此,初始化好CAPropertyAnimation的子類對象后,必須先設置keyPath,搞清楚要修改的是CALayer的哪個屬性,執行的是怎樣的動畫