Core Animation(核心動畫)

Core Animation(核心動畫)

  1. 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>
  • 開發步驟:
    1. 首先得有CALayer
    2. 初始化一個CAAnimation對象,并設置一些動畫相關屬性
    3. 通過調用CALayer的addAnimation:forKey:方法,增加CAAnimation對象到CALayer中,這樣就能開始執行動畫了
    4. 通過調用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫

UIView和核心動畫區別

  1. 核心動畫一切都是假象,并不會真實的修改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

  1. CADisplayLink是一種以屏幕刷新頻率觸發的時鐘機制,每秒鐘執行大約60次左右
  • CADisplayLink是一個計時器,可以使繪圖代碼與視圖的刷新頻率保持同步,而NSTimer無法確保計時器實際被觸發的準確時間
  • 使用方法:
    • 定義CADisplayLink并制定觸發調用方法
    • 將顯示鏈接添加到主運行循環隊列
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容