我使用以下代码旋转任何视图:

func rotateAnimation(theView: UIView, duration: CFTimeInterval = 20.0, repeatCount: Float = 200, toValue: CGFloat = CGFloat(.pi * 2.0)) {
    let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
    rotateAnimation.fromValue = 0.0
    rotateAnimation.toValue = toValue
    rotateAnimation.duration = duration
    rotateAnimation.repeatCount = repeatCount
    theView.layer.add(rotateAnimation, forKey: nil)
}

我想知道如何加快当前正在运行的动画的速度。例如,如果UIView与上面的代码一起旋转,那么如何通过良好的转换使该速度快两倍?

所以:调用rotateAnimation:以正常速度旋转->调用?function? -> UIView将平稳地旋转到所需的速度-> UIView将保持所需的旋转。

谢谢你的帮助。

最佳答案

请尝试以下代码

       let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timer) in
            self.viewToMove.layer.timeOffset = self.viewToMove.layer.convertTime(CACurrentMediaTime(), from: nil)
            self.viewToMove.layer.beginTime = CACurrentMediaTime()
            self.viewToMove.layer.speed += 0.5

        }
        timer.fire()

它将非常平稳地提高动画速度

10-06 10:55