![](/img/trans.png)
[英]How to set default label color based on dark/light mode (in Swift)
[英]Swift force dark/light mode inside an app
我希望用戶按下一個按鈕並強制更改應用程序內的暗/亮模式,代碼可以工作,但需要按兩次按鈕才能使其工作,很奇怪......有人可以看看嗎? 謝謝!
func darkOrLight() {
let window = UIApplication.shared.keyWindow
if #available(iOS 13.0, *) {
if window?.overrideUserInterfaceStyle == .dark {
window?.overrideUserInterfaceStyle = .light
} else {
window?.overrideUserInterfaceStyle = .dark
}
}
}
函數暗光模式(){
if #available(iOS 13.0, *) {
if UIApplication.shared.keyWindow!.overrideUserInterfaceStyle == .dark {
UIApplication.shared.keyWindow!.overrideUserInterfaceStyle = .light
}
else {
UIApplication.shared.keyWindow!.overrideUserInterfaceStyle = .dark
}
}
}
塊引用
問題解決了,不要使用 overrideUserInterFaceStyle 來檢查當前的主題模式,
if #available(iOS 13.0, *) {
if UITraitCollection.current.userInterfaceStyle == .dark {
window?.overrideUserInterfaceStyle = .light
}
else {
window?.overrideUserInterfaceStyle = .dark
}
}
此代碼假定僅有的兩個值是dark
和light
。 但是初始UIUserInterfaceStyle
值是unspecified
,在這種情況下它使用當前系統設置。
與其在你的應用程序中使用“dark”與“light”,不如考慮給他們三個選擇,“dark”、“light”和“system default”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.