traitCollectionDidChange 奇怪的行为

5
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
        print("changed")
    }
}

iOS 13 应用程序在不改变模式(明/暗)的情况下只是转到后台,但 "打印" 函数被调用。是否可能确定实际更改模式的时刻?
谢谢。

请注意,检查UIApplication.shared.applicationState == .active可能有助于避免问题。但要注意,如果界面风格在应用程序非活动状态下更改,则需要确保在应用程序恢复活动状态时正确更新您的界面。 - shim
1个回答

2

我自己也注意到了这一点。
当你进入后台时,用户界面会切换,但是它立即切换回来。
我猜你应该简单地跟随变化并根据需要做出反应。
您可以通过检查traitCollection.userInterfaceStyle来查找当前的界面样式。
例如:
let isDark = traitCollection.userInterfaceStyle == .dark


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接