開篇先上圖,其他都靠編。
1644426-330ae214a7101048.png
1468230232970410.jpg
核心動畫位于UIKit的下一層,相比UIView動畫,它可以實現更復雜的動畫效果。核心動畫作用在CALayer(Core animation layer)上,CALayer從概念上類似UIView,我們可以將UIView看成是一種特殊的CALayer(可以響應事件)。核心動畫和UIView動畫的對比:UIView動畫可以看成是對核心動畫的封裝,和UIView動畫不同的是,通過核心動畫改變layer的狀態(比如position),動畫執行完畢后實際上是沒有改變的(表面上看起來已改變)
核心動畫類中可以直接使用的類有:
CABasicAnimation
CAKeyframeAnimation
CATransition
CAAnimationGroup
CASpringAnimation
核心動畫類的常用屬性:
keyPath:可以指定keyPath為CALayer的屬性值,并對它的值進行修改,以達到對應的動畫效果,需要注意的是部分屬性值是不支持動畫效果的。
以下是具有動畫效果的keyPath:
//CATransform3D Key Paths : (example)transform.rotation.z
//rotation.x
//rotation.y
//rotation.z
//rotation 旋轉
//scale.x
//scale.y
//scale.z
//scale 縮放
//translation.x
//translation.y
//translation.z
//translation 平移
//CGPoint Key Paths : (example)position.x
//x
//y
//CGRect Key Paths : (example)bounds.size.width
//origin.x
//origin.y
//origin
//size.width
//size.height
//size
//opacity
//backgroundColor
//cornerRadius
//borderWidth
//contents
//Shadow Key Path:
//shadowColor
//shadowOffset
//shadowOpacity
//shadowRadius
常用屬性:
beginTime : 動畫的開始時間
autoreverses : 執行的動畫按照原動畫返回執行
duration:動畫的持續時間
repeatCount:動畫的重復次數
timingFunction:動畫的時間節奏控制
timingFunctionName的enum值如下:
kCAMediaTimingFunctionLinear 勻速
kCAMediaTimingFunctionEaseIn 慢進
kCAMediaTimingFunctionEaseOut 慢出
kCAMediaTimingFunctionEaseInEaseOut 慢進慢出
kCAMediaTimingFunctionDefault 默認值(慢進慢出)
fillMode:視圖在非Active時的行為
removedOnCompletion:動畫執行完畢后是否從圖層上移除,默認為YES(視圖會恢復到動畫前的狀態),可設置為NO(圖層保持動畫執行后的狀態,前提是fillMode設置為kCAFillModeForwards)
beginTime:動畫延遲執行時間(通過CACurrentMediaTime() + your time 設置)
delegate:代理
代理方法如下:
- (void)animationDidStart:(CAAnimation *)anim; //動畫開始
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag; //動畫結束
path:關鍵幀動畫中的執行路徑
type:過渡動畫的動畫類型,系統提供了四種過渡動畫。
kCATransitionFade 漸變效果
kCATransitionMoveIn 進入覆蓋效果
kCATransitionPush 推出效果
kCATransitionReveal 揭露離開效果
subtype : 過渡動畫的動畫方向
kCATransitionFromRight 從右側進入
kCATransitionFromLeft 從左側進入
kCATransitionFromTop 從頂部進入
kCATransitionFromBottom 從底部進入
CABasicAnimation
重要屬性
fromValue:keyPath對應的初始值
toValue:keyPath對應的結束值
基礎動畫主要提供了對于CALayer對象中的可變屬性進行簡單動
畫的操作。比如:位移、透明度、縮放、旋轉、背景色等等。
關鍵幀動畫(CAKeyframeAnimation)
CAKeyframeAnimation和CABaseAnimation都屬于CAPropertyAnimatin的子類。CABaseAnimation只能從一個數值(fromValue)變換成另一個數值(toValue),而CAKeyframeAnimation則會使用一個NSArray保存一組關鍵幀。
values:就是上述的NSArray對象。里面的元素稱為”關鍵幀”(keyframe)。動畫對象會在指定的時間(duration)內,依次顯示values數組中的每一個關鍵幀
path:可以設置一個CGPathRef\CGMutablePathRef,讓層跟著路徑移動。path只對CALayer的anchorPoint和position起作用。如果你設置了path,那么values將被忽略。
keyTimes:可以為對應的關鍵幀指定對應的時間點,其取值范圍為0到1.0,keyTimes中的每一個時間值都對應values中的每一幀.當keyTimes沒有設置的時候,各個關鍵幀的時間是平分的。
組動畫(CAAnimationGroup)
CAAnimation的子類,可以保存一組動畫對象,將CAAnimationGroup對象加入層后,組中所有動畫對象可以同時并發運行。
重要屬性
animations: 用來保存一組動畫對象的NSArray。
過渡動畫(CATransition)
CAAnimation的子類,用于做過渡動畫或者轉場動畫,能夠為層提供移出屏幕和移入屏幕的動畫效果。
重要屬性
type:動畫過渡類型
Apple 官方的SDK其實只提供了四種過渡效果。
kCATransitionFade 漸變效果
kCATransitionMoveIn 進入覆蓋效果
kCATransitionPush 推出效果
kCATransitionReveal 揭露離開效果
http://www.cocoachina.com/ios/20160712/17010.html
http://www.lxweimin.com/p/02c341c748f9
http://www.cocoachina.com/ios/20160517/16290.html