【发布时间】:2019-02-11 17:20:00
【问题描述】:
我正在尝试根据用户默认值更改此处状态栏的外观,用户默认值会检测用户是否打开了模式,但使用setNeedsStatusBarAppearanceUpdate() 不起作用。我将默认状态栏设置为 Light。
这是我目前正在使用的代码:
var darkModeOn: Bool!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode") // Retrieve the state
if isDarkMode == false{
UserDefaults.standard.set(false, forKey: "isDarkMode")
UIApplication.shared.statusBarStyle = .default
view.backgroundColor = UIColor.white
}else{
UserDefaults.standard.set(true, forKey: "isDarkMode")
UIApplication.shared.statusBarStyle = .lightContent
view.backgroundColor = UIColor(red: 35/255, green: 35/255, blue: 35/255, alpha: 1)
}
}
我已经尝试过使用
override var preferredStatusBarStyle: UIStatusBarStyle {
return darkModeOn ? .lightContent : .default
}
但只显示灯光状态栏
【问题讨论】:
-
在您的 Info.plist 文件中,您是否将“查看基于控制器的状态栏外观”设置为“是”?
-
在info.plist视图中基于控制器的状态栏外观设置为No
标签: ios swift nsuserdefaults statusbar