如何解决iOS暗模式用户界面样式在后台输入时来回更改
我支持黑暗模式。在某些视图控制器中,我使用traitCollectionDidChange(_)
处理用户界面样式的更改。
override func traitCollectionDidChange(_ prevIoUsTraitCollection: uitraitcollection?) {
super.traitCollectionDidChange(prevIoUsTraitCollection)
if #available(iOS 13.0,*) {
if let p = prevIoUsTraitCollection {
print("TRAIT COLLECTION \(p.userInterfaceStyle.desc) -> \(traitCollection.userInterfaceStyle.desc). \(UIApplication.shared.applicationState.desc); \(p.hasDifferentColorAppearance(comparedTo: traitCollection) ? "TRAIT CHANGED" : "TRAIT SAME")")
}
}
}
当我按下主页按钮并进入背景时,此方法将触发两次:
TRAIT COLLECTION DARK -> LIGHT. BACKGROUND; TRAIT CHANGED
TRAIT COLLECTION LIGHT -> DARK. BACKGROUND; TRAIT CHANGED
当我在iOS设置中更改外观并回到前台时,我得到了
TRAIT COLLECTION DARK -> LIGHT. INACTIVE; TRAIT CHANGED
奇怪。每次我在后台运行时,都会来回更改用户界面样式。为什么?
解决方法
这是预期的行为。当您的应用暂停时,iOS会拍摄一个屏幕快照以显示在应用切换器中。
要考虑在挂起应用程序时发生从亮到暗或从暗到亮的切换的情况,实际上它会拍摄两个快照;一亮一暗。
然后iOS可以在应用切换器中显示正确的快照。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。