Используя этот код:Как устранить «прыжок» в моей CABasicAnimation?
func rotateTheView(_ aView: UIView, inClockwiseDirection isClockwise: Bool) {
let multiplier = (isClockwise ? 1 : -1)
let key = (isClockwise ? "Spin" : "Rotate")
var rotation: CABasicAnimation?
rotation = CABasicAnimation(keyPath: "transform.rotation")
rotation!.fromValue = Int(0)
let multiplicand = multiplier * 2
rotation!.toValue = Int(Double(multiplicand) * .pi)
rotation!.duration = 30 // Speed
rotation!.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
rotation!.repeatCount = HUGE //HUGE_VALF Repeat forever.
aView.layer.add(rotation!, forKey: key)
}
я получить анимацию я хочу. (Либо колесо вращается, либо ячейка вращается достаточно быстро в противоположном направлении, чтобы всегда оставаться точно правой стороной вверх).
Однако, когда 30 секунд (продолжительность) составляет, есть мерцание, как вид переходит обратно к тому, как он выглядел до анимации.
Я понимаю, что это должно работать таким образом.
Как применить поворот к изображению «раньше», чтобы, когда продолжительность истекает, я не вижу, чтобы какие-либо ячейки прыгали?
Увеличение длительности анимации замедляет вращение рулем, так что не является подходящим решением.
Если #22521690 относится, я не понимаю, как - у меня нет явного CATransaction.
Почему вы объявляете 'rotation' как необязательный? – matt
Да, мне нужно его очистить. Я преобразовал это из цели c пару лет назад. Я только недавно просмотрел его. – Mozahler
Обновлен мой источник. Спасибо, что указали! – Mozahler