iOS 14 损坏的动画 [关闭]

Posted

技术标签:

【中文标题】iOS 14 损坏的动画 [关闭]【英文标题】:iOS 14 broken animations [closed] 【发布时间】:2020-09-18 07:20:23 【问题描述】:

我开始使用 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 模拟器还是设备上运行应用程序,代码都是完全相同的。

【问题讨论】:

【参考方案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。我仍然需要对内部行使用列表,因为我需要滑动删除...

以上是关于iOS 14 损坏的动画 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS:嵌套推送动画可能导致导航栏损坏

iOS 14 Google Cardboard 视图已损坏

损坏的内联 datePicker 作为 TextField Swift iOS 14 的 InputView

嵌套推送动画可能导致导航栏损坏多次警告

history_uint损坏致mysql频繁重启导致zabbix_server关闭解决办法

内容偏移动画损坏