#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?() }