標籤:
核心動畫類: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:核心動畫具體的類和協議的介紹