gpt4 book ai didi

iOS 13 黑暗模式 : traitCollectionDidChange only called the first time

转载 作者:行者123 更新时间:2023-12-01 15:20:59 24 4
gpt4 key购买 nike

我的应用程序使用自定义颜色主题,但 iOS13 用户可以选择进入以下暗模式。

我以为我可以简单地在 ViewController's 中更新我的颜色traitCollectionDidChange()但是由于某种原因,这个函数只有在用户第一次在 iOS 设置中改变界面样式时才会调用。
虽然这对大多数用户来说可能已经足够了,但理想情况下是 traitCollectionDidChange()每次用户更改他们的 iOS 设置时都应该调用它。

非常基本:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
print(#function)

guard traitCollection.userInterfaceStyle != previousTraitCollection?.userInterfaceStyle else { return }

NotificationCenter.default.post(name: NSNotification.Name(Keys.Notifications.updateColorTheme), object: nil)
}

我启动我的应用程序,离开它,在 iOS 设置中更改外观:下次我打开应用程序(打开,不启动)时,调用上述函数并且应用程序更新颜色。
现在,当我重复相同的过程时,不再调用该函数。

最佳答案

我发现如果我设置 UIViewController 的 overrideUserInterfaceStyle属性,然后是 traitCollectionDidChange方法没有被调用,但是当我没有设置这个 overrideUserInterfaceStyle属性(property),traitCollectionDidChange叫做。

UIKit中可能有一些基于overrideUserInterfaceStyle的内部方法调用判断属性(property)。

希望这有帮助。

关于iOS 13 黑暗模式 : traitCollectionDidChange only called the first time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557847/

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