Повторяющаяся анимация UIView останавливается, когда исчезает UIView - PullRequest
1 голос
/ 05 мая 2019

У меня есть приложение для iOS с панелью вкладок внизу, например: tab bar

Белый кружок в центре панели вкладок пульсирует, постепенно исчезая и исчезая. Вот код, который делает пульсирующую анимацию:

UIView.animateKeyframes(withDuration: 1.4, delay: 0, options: [.repeat, .autoreverse], animations: {
    UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.7, animations: {
        self.recordingPulsatingCircleView?.alpha = 1
    })
    UIView.addKeyframe(withRelativeStartTime: 0.7, relativeDuration: 1.4, animations: {
        self.recordingPulsatingCircleView?.alpha = 0
    })
}, completion: nil)

Проблема в том, что когда панель вкладок исчезает, например, из-за того, что она скрыта за другим видом, или когда я нажимаю кнопку «Домой» и снова возвращаю приложение, анимация останавливается, и белый круг исчезает, как это : enter image description here

Я ожидаю, что анимация продолжится, потому что я установил .repeat в качестве одного из options. Любая помощь?

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Я решил свою проблему, заменив UIView.animateKeyframes на CABasicAnimation, а затем установив для свойства isRemovedOnCompletion из CABasicAnimation значение false.Таким образом, анимация больше не останавливается, когда вид находится вне экрана.Вот код:

let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 0
animation.toValue = 1
animation.duration = 0.7
animation.autoreverses = true
animation.repeatCount = .infinity
animation.isRemovedOnCompletion = false   //Set this property to false.
recordingPulsatingCircleView?.layer.add(animation, forKey: "pulsating")
0 голосов
/ 05 мая 2019

У меня была такая же проблема, я использовал CABasicAnimations.

Ссылка на документ

Чтобы объединить несколько анимаций, вы должны использовать CAAnimationGroup.

Пример ссылки

...