动画停止时如何动画速度慢

时间:2018-05-08 05:48:33

标签: ios swift core-animation cabasicanimation

我的代码如下。动画停止后如何加快速度?

extension UIView{
    func rotate() {
        let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
        rotation.fromValue = 0.0
        rotation.toValue = 25
        rotation.duration = 1.5
        rotation.isCumulative = true
        rotation.repeatCount = 1
        self.layer.add(rotation, forKey: "rotationAnimation")
    }
}

2 个答案:

答案 0 :(得分:2)

请查找以下详细信息,并在代码中添加以下行

rotation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
  

EaseInOut 缓入缓出曲线会导致动画开始   慢慢地,加速到其持续时间的中间,然后慢下来   再完成之前。这是大多数人的默认曲线   动画。

     

EaseIn 缓入曲线会导致动画缓慢开始,然后   随着它的进展加快。

     

EaseOut 缓出曲线会使动画快速开始,并且   然后在完成时放慢速度。

希望这对您有所帮助,如果有任何疑问,请告诉我。

答案 1 :(得分:1)

您可以使用self.layer.speed平滑降低动画速度

你可以这样做

注意:您需要在此处进行一些修改,而不是在xcode中进行测试

  let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
        self.layer.timeOffset = self.layer.convertTime(CACurrentMediaTime(), from: nil)
        if self.layer.speed == 0 { timer.invalidate() }
        self.layer.beginTime = CACurrentMediaTime()
        self.layer.speed -= 0.5

    }
    timer.fire()

希望它有用