iOS状态栏中的坑
2019-02-02 本文已影响2人
lanmoyingsheng
设置状态栏样式的一般有两种方式。
info.plist中有View controller-based status bar appearance
字段,翻译为基于视图控制器的状态栏样式。
一、设置View controller-based status bar appearance
为YES。
即在控制器中配置状态栏的的样式。例如:
override func prefersStatusBarHidden() -> Bool {
return true/false
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent/.default
}
二、设置View controller-based status bar appearance
为NO。
即需要直接配置状态栏样式。例如:
UIApplication.shared.statusBarStyle = .lightContent/.default
UIApplication.shared.isStatusBarHidden = true/false
个人认为第二种方法,可以在任意地方调用,较为灵活,使用更多。
第一种方式可能是第二种的变种,因为在第一种方式中,完全可以把一个变量作为返回值,在需要时,修改这个返回值,并调用setNeedsStatusBarAppearanceUpdate刷新。
func action() {
_barHidden = false
_barStyle = .lightContent
setNeedsStatusBarAppearanceUpdate() // 通知系统做一个标记,在下一次runloop循环中需要修改状态栏样式。
}
override func prefersStatusBarHidden() -> Bool {
return _barHidden
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return _barStyle
}
我觉得这种还不如直接第二种方式,直接修改状态栏样式。