iOS:核心動畫具體的類和協議的介紹

來源:互聯網
上載者:User

標籤:

核心動畫類:CAAnimation、CAPropertyAnimation、CABasicAnimation、CAKeyframeAnimation、CATransition、CAAnimationGroup

 父類:CAAnimation(抽象類別)CAAnimation直接子類:CAPropertyAnimation(抽象類別),CATransition(轉場動畫),CAAnimationGroup(動畫數組)CAPropertyAnimation直接子類:CABasicAnimation(基本動畫)、CAKeyframeAnimation(主要畫面格動畫) ========================================================= 類介紹:

@interface CAAnimation : NSObject <NSCoding, NSCopying, CAMediaTiming, CAAction>//動畫根抽象類別

//速度控制函數(決定動畫的運行速率)

@property(strong) CAMediaTimingFunction *timingFunction;

//動畫的代理

@property(strong) id delegate;

//預設為YES,代表動畫執行完畢後就從圖層上移除,圖形會恢複到動畫執行前的狀態

@property(getter=isRemovedOnCompletion) BOOL removedOnCompletion;

//類方法,建立動畫執行個體

+ (instancetype)animation;

//根據指定的鍵擷取對應的屬性值

+ (id)defaultValueForKey:(NSString *)key;

//根據指定的鍵擷取的對應的屬性是否歸檔

- (BOOL)shouldArchiveValueForKey:(NSString *)key;

@end

 

=========================================================

 

@interface NSObject (CAAnimationDelegate)//NSObject類的一個動畫協議分類

//開始動畫時觸發的方法

- (void)animationDidStart:(CAAnimation *)anim;

//結束動畫時觸發的方法

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

@end

 

=========================================================

 

@interface CAPropertyAnimation : CAAnimation //抽象類別,建立對象必須使用它的子類 

//根據指定的鍵路徑建立一個動畫執行個體

+ (instancetype)animationWithKeyPath:(NSString *)path;

//屬性的鍵路徑

@property(copy) NSString *keyPath;

//是否添加

@property(getter=isAdditive) BOOL additive;

//是否累計

@property(getter=isCumulative) BOOL cumulative;

//動畫形變函數(形變的transform係數)

@property(strong) CAValueFunction *valueFunction;

@end

 

=========================================================

 

注意:核心動畫中有一個協議需要注意的:CAMediaTiming   //動畫協議

下面是協議對應的一些屬性(方法)

//動畫開始時間,用來設定動畫順延強制時間

@property CFTimeInterval beginTime;

//動畫期間
@property CFTimeInterval duration;

//動畫執行速率
@property float speed;

//時間執行位移量
@property CFTimeInterval timeOffset;

//動畫重複次數
@property float repeatCount;

//動畫重複時間
@property CFTimeInterval repeatDuration;

//如果設定為YES,代表動畫每一次重複執行的效果會跟上一次相反

@property BOOL autoreverses;

//動畫填充模式(要想fillMode有效,需要設定removedOnCompletion = NO)
@property(copy) NSString *fillMode;

 

=========================================================

 

@interface CABasicAnimation : CAPropertyAnimation//基本動畫

//動畫某屬性開始值、最終值、經過值(值可能是動畫的位置position、形變屬性transform等)

@property(strong) id fromValue, toValue, byValue;

@end

 

=========================================================

 

@interface CAKeyframeAnimation : CAPropertyAnimation //主要畫面格動畫

//存放動畫幀的數組

@property(copy) NSArray *values;

//動畫運動路徑

@property CGPathRef path;

//存放關鍵時刻的數組,可以為對應的主要畫面格指定對應的時間點,其取值範圍為0到1.0

@property(copy) NSArray *keyTimes;

//速度控制函數(決定動畫的運行速率)

@property(copy) NSArray *timingFunctions;

//計算模式,對於每一幀之間的串連模式

@property(copy) NSString *calculationMode;

//存放主要畫面格時間執行的動畫的一些值(position、transform等)

@property(copy) NSArray *tensionValues, *continuityValues, *biasValues;

//旋轉模式

@property(copy) NSString *rotationMode;

 @end

 

=========================================================

 

@interface CATransition : CAAnimation  //轉場動畫

//動畫過渡類型

@property(copy) NSString *type;

//動畫過渡方向

@property(copy) NSString *subtype;

//動畫起點和動畫終點(在整體動畫的百分比)

@property float startProgress, endProgress;

//動畫過濾

@property(strong) id filter; 

@end

 

=========================================================

 

@interface CAAnimationGroup : CAAnimation //動畫數組(存放許多可以同時持續執行的動畫)

//存放多張動畫的數組

@property(copy) NSArray *animations;

@end

 

iOS:核心動畫具體的類和協議的介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.