【问题标题】:iOS 14 broken animations [closed]iOS 14 损坏的动画 [关闭]
【发布时间】:2023-03-11 19:54:01
【问题描述】:

我开始使用 SwiftUI 为 iOS 13 创建一个应用程序(尚未在应用程序商店中)。在过去的几周里,我一直在重写应用程序的部分内容以使其适用于 iOS 14(是的,那些该死的列表分隔符——它们什么时候可以移除???)。该应用程序现在可以运行,但许多动画都已损坏 - 这意味着:例如我创建的弹出视图现在完全没有动画,而不是弹簧动画。在 iOS 13.6 和 13.7 下,动画在真实设备和模拟器(iPhone SE 2n gen)下运行良好,但在 iOS 14 下不再运行。我刚刚下载了 Xcode 12.2 beta(iOS 14.2),但问题尚未解决。我在反馈应用程序中发布了问题。我只想问是否有其他人对动画有类似的问题。如果我收到 Apple 的回复(不太可能......),我会更新这篇文章。 当然,无论我是在 iOS 14 模拟器还是设备上运行应用程序,代码都是完全相同的。

【问题讨论】:

    标签: ios swift animation swiftui ios14


    【解决方案1】:

    我在更新 xCode 后也遇到了动画问题。

    在我的情况下是 UICollectionViewCell 的问题:

        // iOS 13
        cell?.contentView.animateScaleTransform(x: 0.9, y: 0.9, duration: 0.1)
    

    在使用新版本的 xCode 构建后,我搞得一团糟……

    我一直在寻找很多信息,但解决起来太容易了:

        // iOS 14
        cell?.animateScaleTransform(x: 0.9, y: 0.9, duration: 0.1)
    

    因此,我对您的建议是检查您正在制作动画的视图。 也许苹果改变了默认视图的层次结构。 另外,如果你显示一些代码会更好。

    【讨论】:

    • 感谢您的提示,但我的应用是使用 SwiftUI 构建的。我发现弹出动画的过渡是否可见取决于列表中有多少行。这是一个嵌套列表(在上面显示计时器视图)。行数越少,动画越流畅......每次弹出窗口出现和消失时都会渲染嵌套行。主行也会随着弹出窗口的变化而重新渲染,但每次计时器触发时都会重新渲染。但是,暂停计时器根本不会改善动画,但删除所有行会。
    • 经过一番实验,我终于找到了罪魁祸首...虽然在 iOS 13 下使用复杂的嵌套列表似乎不会导致任何卡顿的动画,但您的 SwiftUI 应用程序在以下情况下会出现严重的图形性能问题iOS 14 ......所以我用 LazyVStack 替换了外部列表。问题解决了。原因可能是列表的 SwiftUI 2.0 实现不是最佳的。显然在 SwiftUI 1.0 下,列表实际上是封装了 UITableViews。我仍然需要对内部行使用列表,因为我需要滑动删除...
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-07-18
    • 2013-09-21
    • 2021-02-10
    • 2013-02-25
    相关资源
    最近更新 更多