框架圖.png
- OpenGL ES是個C語言寫的非常底層的圖形處理框架
- 是個移動設(shè)備上繪制2D和3D計算機圖形的標準開源庫,廣泛地被用在游戲的圖形繪制上,負責直接驅(qū)動GPU,效率非常高,缺點是使用起來異常復雜。
- Core Animation是對OpenGL ES的Objective-C封裝
- 具有與OpenGL ES幾乎等價的高性能,卻隱藏了OpenGL ES的復雜性。
Snip20151029_7.png
一、Core Animation 核心動畫
- Core Animation可以用在Mac OS X和iOS平臺。
- Core Animation的動畫執(zhí)行過程都是在
后臺操作
的,不會阻塞主線程。 - 還有一點需要注意:Core Animation是直接作用在CALayer上的,并非UIView。
二、Core Animation的使用步驟
- 注意:如果不是xcode5之后的版本,使用它需要先添加QuartzCore.framework和引入對應(yīng)的框架<QuartzCore/QuartzCore.h>
1、使用步驟
- 1.首先得有CALayer
- 2.初始化一個CAAnimation對象,并設(shè)置一些動畫相關(guān)屬性
- 3.通過調(diào)用CALayer的addAnimation:forKey:方法,添加CAAnimation對象到CALayer中,這樣就能開始執(zhí)行動畫了
- 4.通過調(diào)用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫
三、CAAnimation
- 要想執(zhí)行動畫,就必須初始化一個CAAnimation對象。下面介紹CAAnimation
結(jié)構(gòu)圖.png
核心動畫中所有類都遵守CAMediaTiming
注意:CAAnaimation是個抽象類,不具備動畫效果,CAPropertyAnimation也是個抽象類,本身不具備動畫效果,只有它們的子類才有
可用動畫類 : CAAnimationGroup 、CATransition、CABasicAnimation和CAKeyframeAnimation
CAAnimationGroup:動畫組,可以同時進行縮放,旋轉(zhuǎn)等動畫
CATransition:轉(zhuǎn)場動畫,界面之間跳轉(zhuǎn)都可以用轉(zhuǎn)場動畫
CABasicAnimation:基本動畫,做一些簡單效果
CAKeyframeAnimation:幀動畫,做一些連續(xù)的流暢的動畫
四、CAAnimation的常用屬性
duration:動畫的持續(xù)時間
repeatCount:動畫的重復次數(shù)
timingFunction:控制動畫運行的節(jié)奏
---> timingFunction可選的值有:
--- kCAMediaTimingFunctionLinear(線性):勻速,給你一個相對靜態(tài)的感覺
--- kCAMediaTimingFunctionEaseIn(漸進):動畫緩慢進入,然后加速離開
--- kCAMediaTimingFunctionEaseOut(漸出):動畫全速進入,然后減速的到達目的地
--- kCAMediaTimingFunctionEaseInEaseOut(漸進漸出):動畫緩慢的進入,中間加速,然后減速的到達目的地。這個是默認的動畫行為。
delegate:動畫代理(CAAnimationDelegate),用來監(jiān)聽動畫的執(zhí)行過程
@interface NSObject (CAAnimationDelegate)
// 動畫開始執(zhí)行的時候觸發(fā)這個方法
- (void)animationDidStart:(CAAnimation *)anim;
// 動畫執(zhí)行完畢的時候觸發(fā)這個方法
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end
4> delegate:動畫代理,用來監(jiān)聽動畫的執(zhí)行過程