我正在尝试在我的应用程序中实现 Lottie AnimationView,但我无法调整 View 大小。

这是我 setup/constrain AnimationView 的方式:

@objc func showAnimationTapped(){



    let logoAnimation = AnimationView(name: "StrokeAnimation")
    logoAnimation.contentMode = .scaleAspectFit
    self.view.addSubview(logoAnimation)

    logoAnimation.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    logoAnimation.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    logoAnimation.heightAnchor.constraint(equalToConstant: 200).isActive = true
    logoAnimation.widthAnchor.constraint(equalToConstant: 200).isActive = true

    logoAnimation.play()

}

问题是 XCode 打破了所有约束,并且 AnimationView 被错误地放置/缩放。我还检查了 View Hirarchy 并且 AnimationView 实际上覆盖了整个屏幕......也用 CGRect 尝试过,但这并没有改变任何东西。

如何在 Swift 5 中调整/限制动画的大小?

我在这个主题上找不到任何东西..我很感激每一个帮助!

也许我的 AE 文件有问题,因为当我在 Lottiefiles.com 上预览它时,“中风”与我的 AE 文件中的动画不同。

但是,我也直接使用 Lottie 的文件对其进行了测试,这导致了同样的问题......

所以也许有一位 Swift/Lottie/AfterEffects 专家可以在这里帮助我:)

这是我的 AE-File + JSON-file 以便更好地理解。如果有什么不清楚的,请告诉我。

最佳答案

由于您手动提供了自己的约束,因此您忘记禁用(将其设置为 false) translatesAutoresizingMaskIntoConstraints ,请尝试以下操作:

@objc func showAnimationTapped(){
    let logoAnimation = AnimationView(name: "StrokeAnimation")
    logoAnimation.contentMode = .scaleAspectFit
    logoAnimation.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(logoAnimation)

    logoAnimation.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    logoAnimation.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    logoAnimation.heightAnchor.constraint(equalToConstant: 200).isActive = true
    logoAnimation.widthAnchor.constraint(equalToConstant: 200).isActive = true

    logoAnimation.play()
}

请记住,如果 translatesAutoresizingMaskIntoConstraints 设置为 true(默认情况下),系统会根据 View 的框架及其自动调整大小掩码自动创建一组约束,但您不希望那样,您显然希望将自己的约束设置为你在代码中做的。

旁注:注意 showAnimationTapped() 可能会被多次调用,并且您不想每次都添加一个 logoAnimation View ,否则会使您的 UI 性能最差。也许你可以把它放在一个计算变量中,添加它并显示/隐藏它,或者只是把它放在一个计算变量中并添加/删除它。

关于ios - 在 Swift 5 中更改 Lottie AnimationView 的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60481037/

10-12 12:34