iOS動畫程式設計-Layer動畫[ 6 ] 高階時間控制Advanced Timing

Hydrogen發表於2016-04-16

UIView動畫相比,Layer動畫程式設計師能控制的東西顯然多了很多,在時間控制我們不僅能實現UIViewAnimationOption中CurveEaseInOut/CurveEaseIn/CurveEaseOut/CurveLinear這樣控制動畫曲線的辦法,還有更多的可以自定義的地方
這裡我們就來共同來學習一下動畫曲線的時間控制

CAMediaTimingFunction

CAMediaTimingFunction有一組預先定義好的用於控制動畫曲線的函式

  • kCAMediaTimingFunctionLinear 線性變化, UIViewAnimationOptionCurveLinear的Layer級別實現

  • kCAMediaTimingFunctionEaseIn 開始較慢,結束時變化快,UIViewAnimationOption CurveEaseIn的Layer級別實現

  • kCAMediaTimingFunctionEaseOut 與kCAMediaTimingFunctionEaseIn相反,開始較快,結束時變化慢,UIViewAnimationOptionCurveEaseOut的Layer級別實現

  • kCAMediaTimingFunctionEaseInEaseOut 開始與結束時變化慢,中間變化較快,UIViewAnimationOptionCurveEaseInOut的Layer級別實現

我們可以將timingFunction作用在CAAnimation(及其子類)物件上

groupAnimation.timingFunction = CAMediaTimingFunction( name: kCAMediaTimingFunctionEaseIn)

CAMediaTimingFunction不僅可以通過字串初始化為預先定義好的動畫曲線,還可以建立自定義的動畫曲線
通過新增控制點的方法,建立自定義動畫曲線

CAMediaTimingFunction(controlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y)

其他時間控制屬性

重複動畫

  • repeatCount 用於控制動畫的重複次數

  • repeatDuration 用於控制總的重複時間

  • autoreverses 自動恢復原狀

改變動畫速度

  • speed 動畫速度

相關文章