Core Animation(核心動畫)
- Core Animation,中文翻譯為核心動畫
- 是動畫對象的父類,負責控制動畫的持續時間和速度,是個抽象類,不能直接使用,要實現動畫應該使用它具體的子類
- 是一組非常強大的動畫處理API,利用它使用少量的代碼能做出非常炫麗的動畫效果
- Core Animation可以用在Mac OS X和iOS平臺。
- Core Animation的動畫執行過程都是在后臺操作的,不會阻塞主線程。
- 注意:Core Animation是直接作用在CALayer上的,并非UIView
核心動畫繼承結構.png
(紅色代表來自CAMediaTiming協議的屬性)
Core Animation的使用步驟
- 如果不是xcode5之后的版本,使用它需要先添加QuartzCore.framework和引入對應的框架<QuartzCore/QuartzCore.h>
- 開發步驟:
- 首先得有CALayer
- 初始化一個CAAnimation對象,并設置一些動畫相關屬性
- 通過調用CALayer的addAnimation:forKey:方法,增加CAAnimation對象到CALayer中,這樣就能開始執行動畫了
- 通過調用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫
UIView和核心動畫區別
- 核心動畫一切都是假象,并不會真實的修改layer的屬性
UIView真實改變屬性才能有動畫
什么時候使用核心動畫,什么時候使用UIView
如果以后在執行動畫的過程中,不需要與用戶交互,用核心動畫
核心動畫使用場景: 轉場動畫用的最多
//分別用UIView和核心動畫設置平移動畫,打印最后的位置檢驗
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
NSLog(@"%@", NSStringFromCGPoint(_redViwew.layer.position));
}
使用UIView動畫函數實現轉場動畫——單視圖
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
參數說明:
duration:動畫的持續時間
view:需要進行轉場動畫的視圖
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束后,會自動調用這個block
使用UIView動畫函數實現轉場動畫——雙視圖
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion;
參數說明:
duration:動畫的持續時間
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束后,會自動調用這個block
CADisplayLink
- CADisplayLink是一種以屏幕刷新頻率觸發的時鐘機制,每秒鐘執行大約60次左右
- CADisplayLink是一個計時器,可以使繪圖代碼與視圖的刷新頻率保持同步,而NSTimer無法確保計時器實際被觸發的準確時間
- 使用方法:
- 定義CADisplayLink并制定觸發調用方法
- 將顯示鏈接添加到主運行循環隊列