Я взглянул на ответы в следующем вопросе StackOverflow, но, похоже, ни один из них мне не подходит: при выполнении блока завершения вместо повторного выполнения анимации программа выдает «завершено» до бесконечности без анимация представления вообще.
Как я могу повторять анимацию (используя UIViewPropertyAnimator) определенное количество раз?
Это мой AnimatorFactory
класс:
class AnimatorFactory {
@discardableResult
static func rotateRepeat(view: UIView) -> UIViewPropertyAnimator {
let rotate = UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 1.0, delay: 0.0, options: [.curveLinear], animations: {
view.transform = CGAffineTransform(rotationAngle: .pi)
}, completion: { _ in
print("complete")
self.rotateRepeat(view: view)
})
return rotate
}
}
Он вызывается, как и следовало ожидать, с AnimatorFactory.rotateRepeat(view: <someView>)
Однако возникает проблема, как указано выше. Я ожидаю, что представление будет вращаться несколько раз, пока я не решу изменить или остановить его; Именно по этой причине я выбрал UIViewPropertyAnimator
вместо UIView.animate(withDuration:animations)
.
Каков наилучший способ создания интерактивных повторяемых анимаций UIView? Очень ценится.