Анимация Lottie останавливается, когда я нажимаю на другой элемент панели вкладок

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

Я смог сделать это успешно, но проблема в том, что анимация останавливается, когда я выбираю другой элемент панели вкладок и возвращаюсь к элементу панели вкладок, который имеет вид анимации.

Скриншот

это мой код.

import UIKit
import Lottie
import UserNotifications
import NotificationCenter

class HomeViewController: UIViewController {

    @IBOutlet weak var animationView: UIView!
    var animation : AnimationView?

    override func viewDidLoad() {
        super.viewDidLoad()
        setupAnimation()
        NotificationCenter.default.addObserver(self, selector: #selector(applicationEnterInForground), name: UIApplication.willEnterForegroundNotification, object: nil)
    }

    func setupAnimation() {
        animation = AnimationView(name: "cong")
        animation?.frame = self.animationView.bounds
        self.animationView.addSubview(animation!)
        animation?.loopMode = .loop
        animation?.contentMode = .scaleAspectFit
        animation?.play()
    }

    @objc func applicationEnterInForground() {
        if animation != nil {
            if !(self.animation?.isAnimationPlaying)! {self.animation?.play()}}
    }
}

person Mustafa Aljaburi    schedule 23.10.2019    source источник


Ответы (2)


Лучше использовать viewWillAppear/viewDidAppear, чтобы снова запустить анимацию и убрать наблюдение за willEnterForegroundNotification.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    if self.animation?.isAnimationPlaying == false {
       self.animation?.play()
    }
}
person Kamran    schedule 23.10.2019

Свифт 5

Есть свойство, которое можно установить, и оно восстановит вашу анимацию Лотти:

yourAnimationView.backgroundBehavior = .pauseAndRestore

По умолчанию для этого свойства установлено значение .pause.

person Krekin    schedule 10.12.2020
comment
Похоже, это решает проблему. Спасибо - person Vinayak; 27.01.2021
comment
Красиво, спасибо, работает! - person Harish saini; 04.05.2021