gpt4 book ai didi

Xcode 11 上的 iOS 13 上的 iOS 布局中断 - 未调用 traitCollectionDidChange

转载 作者:行者123 更新时间:2023-11-29 11:25:53 24 4
gpt4 key购买 nike

TL;DR 在 Xcode 11 上 一些 应用程序布局因 iOS 13 而损坏(以下操作系统都可以)。当我进入后台并返回时,它是固定的...除非 UIUserInterfaceStyle 设置为 Light (!)

我正在处理一个不知何故的旧应用程序,该应用程序去年一直没有开发过。我使用的是最新的 Xcode (11.2) 和 Swift 4。当然,当您使用新的 Xcode 版本时,我预计会出现一些编译问题,但一旦这些问题得到修复,我就意识到了以下问题:

应用程序在 iOS 13 上不再正确布局,至少应用程序的某些 View 是这样。不过在 AppStore 布局上不是问题,所以我猜这是 iOS 13 + Xcode 11 的问题(我在这里猜测,我不知道哪个 Xcode 版本用于构建当前应用程序)。

还有一件更重要的事情,当应用程序进入后台时,应用程序突然能够更新它的约束,并且在返回后布局是固定的。有一个异常(exception),如果我在应用程序的 info.plist 上启用 UIUserInterfaceStyle to Light,布局永远不会自行修复。

另一个奇怪的情况是,当您查看并弹出 View 时,它会正确布局(在预览上,如果您使用该手势完成输入,则也在 View 上)。 peek & pop 后不输入,再正常输入,还是无法修复。

最佳答案

我不知道我是怎么找到它的,但解决方案是在 useyourloaf 的帖子上 🤔

显然 iOS 13 现在能够在加载 View 之前预测特征,因此 traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) 在加载 View 时不再被调用!

有时我们需要知道设备的大小来调整一些约束,我们指望这个方法在那里(改变时)做,但由于 iOS 已经检测到它,特性是在加载之前设置的,并且该方法永远不会叫。因此,那段逻辑应该移到其他地方(viewDidLoad、layoutSubviews、...)。

这为我修复了它。现在越来越多的事情开始变得有意义了。但是我不知道为什么设置光样式会导致设备不在后台触发该方法。

来源:https://useyourloaf.com/blog/predicting-size-classes-in-ios-13/

关于Xcode 11 上的 iOS 13 上的 iOS 布局中断 - 未调用 traitCollectionDidChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58952408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com