[英]iOS Dark Mode trait detection
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if #available(iOS 13.0, *) {
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) && traitCollection.userInterfaceStyle != previousTraitCollection?.userInterfaceStyle {
//Do stuff
}
}
}
在上面的代碼中,我試圖檢測應用程序何時在暗模式和亮模式之間切換。 這樣我就可以將一些圖像換成暗模式或亮模式變體(以及其他一些小東西)
然而,問題似乎是每當應用程序通過應用程序切換器進入后台時都會調用它,然后我 go 回到應用程序,並且它一直在暗模式和亮模式之間切換,這對我來說沒有意義.
注意:您不能只讓應用程序切換器 hover 和 go 回到應用程序。 我需要關閉應用程序開關並顯示在我的主屏幕上,然后才能重新啟動切換器並轉到我的應用程序。
關於如何解決這種情況的任何想法?
if #available(iOS 13.0, *) {
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection){
if UIScreen.main.traitCollection.userInterfaceStyle == .dark {
//Do DARK mode stuff
}
}
}
我們最終通過檢查UIScreen.main.traitCollection.userInterfaceStyle
的值來完成這項工作,如果它檢測到不同的ColorAppearance 並且只是簡單地對該模式的當前界面樣式進行操作,這似乎運作良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.