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 动画速度


Hydrogen
2.5k 声望73 粉丝

Write code for fun.