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