在后台 运行 应用程序的最佳方式是什么

What is the best way to run an app in the background

我正在制作一个简单的应用程序来测试 swift 中的 Lottie 动画库。当我第一次使用该应用程序时,代码是完美的 运行。但是如果我从后台重新启动它,动画就会停止。

如何将动画 运行 保持在后台,以便当我切换到另一个应用程序并再次返回时,我看到动画正在运行。

刚开始学习swift,在此先说声抱歉。

import UIKit
import Lottie

class ViewController: UIViewController {
    @IBOutlet weak var animationView: AnimationView!

    override func viewDidLoad() {
        super.viewDidLoad()
        SetupAnimation()
    }

func SetupAnimation() {
        let animationView = AnimationView(name: "kiss")
        animationView.frame = self.animationView.frame
        self.animationView.addSubview(animationView)
        animationView.loopMode = .autoReverse
        animationView.contentMode = .scaleAspectFit
        animationView.play()
   }
}

尝试

override func viewDidAppear(animated: Bool)
{
    super.viewDidAppear(animated: animated)
    animation.play()
}

另一件事在这里拧

var animation: AnimationView!

func SetupAnimation() {
        animation = AnimationView(name: "kiss")
        animation.frame = self.animationView.frame
        self.animationView.addSubview(animation)
        animation.loopMode = .autoReverse
        animation.contentMode = .scaleAspectFit
   }

我不认为 animationView 有任何 AnimationView 的目的。您可以将其更改为 UIView.

@IBOutlet weak var animationView: AnimationView!

@IBOutlet weak var animationView: UIView!

有一件简单的事情可以帮助您播放动画。

在添加了动画的视图控制器中添加 willEnterForegroundNotification 的以下通知。

另一件事,全局声明 Lottie 的 AnimationView 实例。见以下代码

class MyClassVC: UIViewController {

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

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

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

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

这将在应用程序从后台进入前台时播放动画。