Core Animation1-簡介


一、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:控制動畫運行的節奏

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的哪個屬性,執行的是怎樣的動畫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM