当我点击不同的标签栏项目时,Lottie 动画停止

Mus*_*uri 6 ios swift 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()}}
    }
}
Run Code Online (Sandbox Code Playgroud)

Kre*_*kin 16

斯威夫特 5

有一个属性,可以设置它并恢复您的 Lottie 动画:

yourAnimationView.backgroundBehavior = .pauseAndRestore
Run Code Online (Sandbox Code Playgroud)

默认情况下,此属性设置为 .pause


Kam*_*ran 6

更好的是,使用viewWillAppear/viewDidAppear再次启动动画并删除观察willEnterForegroundNotification.

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

    if self.animation?.isAnimationPlaying == false {
       self.animation?.play()
    }
}
Run Code Online (Sandbox Code Playgroud)