iOS動畫(Core Animation)總結

開篇先上圖,其他都靠編。


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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、今夜,我下筆維艱,但我不會停筆 寫寫刪刪,看著一段文字出現又被刪除,今夜,我依然寫得艱難。 寫作和做很多事情一...
    山大王的能量屋閱讀 720評論 4 7
  • 曹小力閱讀 211評論 0 0
  • 我小時候,冬天是個令人愉快的季節。 那時外婆還在世,我們兄妹五個都在縣城里讀小學,每個周六,總盼著爸爸媽媽帶我去外...
    泫喧閱讀 137評論 0 0
  • OC引用Swift 在混合項目中Swift代碼默認使用module管理,這時想要OC引用Swift需要把Swift...
    陽明先生1208閱讀 252評論 0 0