【问题标题】:Why is this Lottie JSON animation not showing in the UIView upon building?为什么这个 Lottie JSON 动画在构建时没有显示在 UIView 中?
【发布时间】:2019-07-26 22:41:26
【问题描述】:

这是我的 UIViewController

 import UIKit
 import Lottie

 class ViewController: UIViewController {
    
  override func viewDidLoad() {
      super.viewDidLoad() {
      let rocketAnimationView = AnimationView()
      //Set animation
      let rocketAnimation = Animation.named("my-json-rocket-animation")
      rocketAnimationView.animation = rocketAnimation
      rocketAnimationView.play()
}

当我构建时,动画没有显示——视图只是保持空白。我尝试在viewDidLoad() 中实现以下内容,这似乎可行,但我的动画无法缩放到我的整个视图:

    let animation = Animation.named("my-json-rocket-animation")

    animationView.animation = animation
    animationView.contentMode = .scaleAspectFit
    view.addSubview(animationView)

    animationView.backgroundBehavior = .pauseAndRestore


    animationView.translatesAutoresizingMaskIntoConstraints = false
    animationView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor).isActive = true
    animationView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true

    animationView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor).isActive = true
    animationView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    animationView.setContentCompressionResistancePriority(.fittingSizeLevel, for: .horizontal)

我希望我的动画会显示在视图中,但我的屏幕仍然是空白的。我是否需要创建一个新的 UIView 并将其与类类型 AnimationView 的 IBOutlet 连接,然后以某种方式设置动画?我知道这可以通过在 3.1.2 版本之前简单地写 animationView.setAnimation(named: "my-json-rocket-animation") 来实现,但我不确定它是否仍然可行。

【问题讨论】:

    标签: swift animation swift5 lottie


    【解决方案1】:

    我会为将来遇到此问题的任何人发布我的解决方案,因为我认为 Airbnb 的文档对于将动画设置为 UIView 有点含糊。问题是我基本上忘了设置视图的帧大小,我不得不使用与 UIView 对应的 IBOutlet。

    import UIKit
    import Lottie
    
    class ViewController: UIViewController {
    
    
    @IBOutlet weak var lottieView: UIView!
    let animationView = AnimationView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    
        animationView.animation = Animation.named("my-json-rocket-animation")
        animationView.frame.size = lottieView.frame.size
        animationView.contentMode = .scaleToFill
    
        lottieView.addSubview(animationView)
        animationView.backgroundBehavior = .pauseAndRestore
    
        animationView.play()
    
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-24
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2018-02-28
      相关资源
      最近更新 更多