gpt4 book ai didi

swift - 最小化应用程序时避免调用 traitCollectionDidChange

转载 作者:行者123 更新时间:2023-12-05 01:36:28 26 4
gpt4 key购买 nike

我的应用程序有一个错误。这个错误的原因是 UIViewController 在 UI 主题从浅色变为深色或从深色变为深色后更新 UITableView 单元格。

我可以修复这个bug,这个bug本身不是问题。

但是,我注意到一些奇怪的行为。当我最小化我的应用程序时,两者

func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)

func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)

被调用两次。我没有更改 UI 主题,但是当我将以下代码添加到我的 UIViewController

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)
{
super.willTransition(to: newCollection, with: coordinator)

Swift.print("Changing to", newCollection.userInterfaceStyle == .dark ? "dark" : "light", "mode.")
}

我得到以下输出:

Changing to dark mode.
Changing to light mode.

就像我说的,我所做的只是最小化我的应用程序(按下主页按钮)。当实际更改 UI 主题时,它只会被调用一次,这很好。

我将在重新加载我的 UITableView 之前检查实际状态(即仅在应用程序状态处于非事件状态时重新加载它,这是使用通知中心更改 UI 主题时的状态),但我我只是好奇。这对我来说似乎是一个错误。

为什么在最小化应用程序时会触发两次委托(delegate)?

最佳答案

这是故意的。正如您可能知道的那样,iOS 会在退出应用程序之前截取屏幕截图,以便在通过应用程序切换器(多任务处理)时显示。自 iOS 13 以来,它在两种暗光模式下都截取了屏幕截图,因此非常简单地更改了特征集合。这样做是为了当用户在明暗模式之间切换时,应用程序切换器中的屏幕截图也会更新(您可以查看)。您应该优化您的应用以适应这种行为。

关于swift - 最小化应用程序时避免调用 traitCollectionDidChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61917882/

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