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 動畫速度