我使用以下代码旋转任何视图:
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()
它将非常平稳地提高动画速度