Я столкнулся со странной проблемой при создании анимации для приложения проекта, над которым я работаю, чтобы улучшить свои навыки. Если вы внимательно посмотрите на следующий рисунок (я добавил здесь версию низкого качества и связал ее с версией высокого качества ниже), вы увидите, что в течение 6 секунд каждый из шпинделей кассеты увеличивается в размере до достижения размера терминала.
![enter image description here](https://i.stack.imgur.com/QR7XJ.gif)
Высококачественная ссылка GIF
GIF были сняты в течение 30 секунд и ускорились до 6 секунд (5-кратная скорость).
Проблема возникает из этого кода:
@discardableResult
static func rotateRepeat(view: UIView) -> UIViewPropertyAnimator {
let rotate = UIViewPropertyAnimator(duration: 1.0, curve: .linear)
rotate.addAnimations {
view.transform = CGAffineTransform(rotationAngle: .pi)
}
rotate.addCompletion{ _ in
view.transform = .identity
self.rotateRepeat(view: view)
}
rotate.startAnimation()
return rotate
}
Эта проблема, похоже, не связана с тем фактом, что я использую UIViewPropertyAnimator для выполнить повторяющуюся анимацию, как это происходит с этим кодом:
UIView.animate(withDuration: 1.0, delay: 0.0, options: [.curveLinear, .repeat, .allowUserInteraction], animations: {
self.view.transform = CGAffineTransform(rotationAngle: .pi)
}, completion: nil)
Я выполнил некоторую элементарную отладку, проверив view.bounds, view.frame и view.image! .size для каждого полного l oop анимации; значения никогда не меняются. Есть ли другие виды значений в представлении, на которые я должен взглянуть, чтобы разгадать эту тайну?