ios - 在 Swift 5 中更改 Lottie AnimationView 大小

标签 ios json swift autolayout lottie

我正在尝试在我的应用程序中实现 Lottie AnimationView,但在调整 View 大小时遇到​​问题。

这就是我设置/约束 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 HirarchyAnimationView 实际上覆盖了整个屏幕...还尝试了 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/

相关文章:

java - Web 服务中字符串参数的最大大小是多少?

ios - 在 Firebase 中通过电子邮件查找 UID

iOS Domain=kCLErrorDomain Code=1 在请求位置权限之前

ios - ld : library not found for -lBolts

php - 重力形式 API 权限被拒绝

java - 将嵌套文档 mongoDB 序列化到 Jackson

ios - Swift % 计算不正确

ios - 如何在 Swift 3 中解码 html 格式的文本

ios - 圈内圈

python - for循环将相同的值加在一起并制作JSON格式