当我点击不同的标签栏项目时,Lottie 动画停止
Posted
技术标签:
【中文标题】当我点击不同的标签栏项目时,Lottie 动画停止【英文标题】:Lottie animation stopped when i tap on different tab bar item 【发布时间】:2019-10-23 07:18:36 【问题描述】:我在我的应用程序中使用 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()
【问题讨论】:
【参考方案1】:斯威夫特 5
有一个可以设置的属性,它将恢复你的 Lottie 动画:
yourAnimationView.backgroundBehavior = .pauseAndRestore
默认情况下,该属性设置为.pause
【讨论】:
这似乎可以解决问题。谢谢 当你使用 Lottie 时,尤其是 TabBar 应该是单色,还是支持多色? @Krekin 对此有任何想法。我目前收到了一个有多种颜色的 Lottie,但标签栏不支持它【参考方案2】:更好的是,使用viewWillAppear/viewDidAppear
重新启动动画并删除观察willEnterForegroundNotification
。
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
if self.animation?.isAnimationPlaying == false
self.animation?.play()
【讨论】:
以上是关于当我点击不同的标签栏项目时,Lottie 动画停止的主要内容,如果未能解决你的问题,请参考以下文章