Я пытаюсь выяснить, почему UIView.animate
не работает должным образом.
Я знаю, с помощью UIView.animateKeyframes
я могу объединить несколько типов анимаций вместе, но в этом случае я делаю только одну анимацию transform
от текущего размера до 0.0
.
Изображение вращения уже вращается с использованием CABasicAnimation
до этого преобразования с использованием:
let spinAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
spinAnimation.toValue = .pi * 2.0 // 360º spin
spinAnimation.duration = 1.4
spinAnimation.repeatCount = Float.greatestFiniteMagnitude // Repeat forever in loops.
spinAnimation.isCumulative = true
spinAnimation.isRemovedOnCompletion = false
self.spinnerImageView.layer.add(spinAnimation, forKey: self.spinnerAnimationKey)
Анимация ключевого кадра UIView
UIView.animateKeyframes(withDuration: Constants.AnimationDuration.standard, delay: 0.0, options: .calculationModeLinear, animations: {
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.4, animations: {
self.spinner.transform = CGAffineTransform(scaleX: 0.0, y: 0.0)
})
}) { (_) in
super.endRefreshing()
}
UIView Анимация
UIView.animate(withDuration: 0.4, delay: 0.0, options: .curveLinear, animations: {
self.spinner.transform = CGAffineTransform(scaleX: 0.0, y: 0.0)
}) { (_) in
super.endRefreshing()
}
Анимация ключевого кадра работает так, как задумано, когда показывает анимационное изображение, уменьшенное до 0.0
, но стандартная анимация просто приводит к исчезновению изображения. Разве они не должны действовать одинаково или потому, что изображение уже имеет слой CABasicAnimation, из-за которого animate
не работает должным образом? Я бы предпочел использовать .animate
, так как я делаю только преобразование.