用了好長時間的動畫了,一直沒有總結,打算把它總結一下,做個記錄。
核心動畫分類:
CABasicAnimation -- 基本動畫
CAKeyframeAnimation -- 關鍵幀動畫
CATransition -- 轉場動畫
CASpringAnimation -- 彈簧動畫
CAAnimationGroup -- 動畫組
CABasicAnimation 基本動畫
* 動畫的本質就是修改圖層的某些屬性
* 核心動畫,利用核心動畫修改Layer某些屬性
簡介
基本動畫是CAPropertyAnimation的子類
屬性說明:
。fromValue:keyPath相應屬性的初始值
。toValue:keyPath相對應的結束值
動畫過程說明:
隨著動畫的進行,在長度為duration的持續(xù)時間內,keyPath相應的屬性值從fromValue漸漸變?yōu)閠oValue
keyPath內容是CALayer的可動畫Animatable屬性
如果fillMode=kCAFillModeForwards同時removedOnComletion=NO,那么在動畫執(zhí)行完畢后,圖層會保持顯示動畫執(zhí)行后的狀態(tài)。但在實質上,圖層的屬性值還是動畫執(zhí)行前的初始值,并沒有真正被改變。
以下是代碼實現(xiàn)步驟:
* 1.創(chuàng)建基礎核心動畫
CABasicAnimation *anim = [CABasicAnimation animation];
* 2.描述修改Layer的某個屬性
anim.keyPath = @"position”;
* 3.描述修改Layer屬性的值
動畫的起點(如果不設,以默認值為終點)
anim.fromValue = @0
動畫的終點
anim.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 400)];
* 4.動畫時長
anim.duration = 1;
* 5.取消反彈
(1)在動畫完成的時候不要給我把動畫銷毀
anim.removedOnCompletion = NO;
(2)動畫永遠保持最新的狀態(tài)
anim.fillMode = kCAFillModeForwards;
* 6.添加核心動畫
[_reaView.layer addAnimation:anim forKey:nil];
關于keyPath:
具體參數(shù)值如下:
transform.scale = 縮放
transform.scale.x = 寬的比例轉換
transform.scale.y = 高的比例轉換
transform.rotation.z = 平面圖的旋轉
opacity = 透明度
margin = 邊框間隔?
zPosition = 平面圖的位置
backgroundColor = 背景色
cornerRadius = layer的角度
borderWidth = 邊框寬度
contents = 內容
bounds = 大小
contentsRect = 內容矩形
frame = 位置
hidden = 隱藏
mask = 標記
position = 位置
shadowOffset = 陰影偏移
shadowColor = 陰影顏色
shadowRadius = 陰影角度