Анимация Лотти: воспроизведение анимации даже после нажатия кнопки AnimatedButton

#ios #swift #lottie

#iOS #быстрый #лотти

Вопрос:

Я использую фреймворк AnimatedButton from Lottie , и он отлично работает, но единственная проблема, с которой я сталкиваюсь, заключается в том, что анимация перестает воспроизводиться после AnimatedButton нажатия, когда я хочу, чтобы кнопка анимировалась все время, даже после нажатия.

 let middleButton = AnimatedButton()    middleButton.frame.size = CGSize(width: 80, height: 80)    middleButton.animation = Animation.named("eye")   middleButton.animationView.play()  middleButton.animationView.loopMode = .autoReverse  middleButton.animationView.backgroundBehavior = .pauseAndRestore  middleButton.addTarget(self, action: #selector(self.middleButtonAction), for: .touchUpInside)  

Комментарии:

1. Вы пробовали animationView.loopMode = .loop

2. да, к сожалению, никакой разницы

3. Вы пробовали настроить параметры перед вызовом метода play (), потому что при вызове метода play() создается анимационный контекст со всеми доступными на тот момент значениями. Я привожу пример ниже.

Ответ №1:

Можете ли вы попробовать ниже?

 let middleButton = AnimatedButton()    middleButton.frame.size = CGSize(width: 80, height: 80)    middleButton.animation = Animation.named("eye")   middleButton.animationView.loopMode = .autoReverse  middleButton.animationView.backgroundBehavior = .pauseAndRestore  middleButton.addTarget(self, action: #selector(self.middleButtonAction), for: .touchUpInside) middleButton.animationView.play()  

Комментарии:

1. В этом есть большой смысл! Но по какой-то причине анимация все равно останавливается после нажатия на кнопку, даже если функция play() вызывается после установки всех параметров 🙁 Она не прекращает воспроизведение, когда я выхожу из приложения и возвращаюсь или меняю вкладки на панели вкладок, но делает это, когда я на самом деле нажимаю кнопку.

Ответ №2:

Мне удалось исправить это, просто инициализируя анимацию лотти при каждом нажатии кнопки:

 @objc func didTapButton(sender: UIButton) {    // Animation logic  middleButton.animation = Animation.named("eye")  middleButton.animationView.loopMode = .autoReverse  middleButton.animationView.backgroundBehavior = .pauseAndRestore  middleButton.animationView.play()    didTapButton?() }