Swift: пауза анимации
У меня есть этот код для запуска анимации:
func startRotateView(targetView: UIView, duration: Double = 3.0) {
UIView.animate(withDuration: duration, delay: 0.0, options: .curveLinear, animations: {
targetView.transform = targetView.transform.rotated(by: CGFloat(Double.pi))
}) { finished in
self.startRotateView(targetView: targetView, duration: duration)
}
}
Но как еe проставить на паузу?
Ответы (1 шт):
Автор решения: Данил Блинов
→ Ссылка
Вам нужно использовать этот код.
func pauseLayer(layer: CALayer) {
let pausedTime: CFTimeInterval = layer.convertTime(CACurrentMediaTime(), from: nil)
layer.speed = 0.0
layer.timeOffset = pausedTime
}
func resumeLayer(layer: CALayer) {
let pausedTime: CFTimeInterval = layer.timeOffset
layer.speed = 1.0
layer.timeOffset = 0.0
layer.beginTime = 0.0
let timeSincePause: CFTimeInterval = layer.convertTime(CACurrentMediaTime(), from: nil) - pausedTime
layer.beginTime = timeSincePause
}
В вашем случае
pauseLayer(layer: targetView.layer)