为了研究UINavigationBar
和UIStatusBar
的用户界面,我将导航栏样式更改为黑色,并取消选中栏可见性,即显示导航栏,但UIStatusBar
样式没有不要改为lightContent
。
似乎如果我们隐藏导航栏,状态栏样式不会根据导航栏的样式而改变,它总是采用默认值 - 即黑色 - 文本,我们必须明确更改状态栏样式。 / p>
我们需要设置任何方法或变量来保持它依赖于导航栏样式,即使它被隐藏了吗?
答案 0 :(得分:1)
据我所知,没有内置设置可自动检测导航栏的可见性和相应地更改状态栏。如果要实现此目的,请在视图控制器中覆盖preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
guard let navBarStyle = navigationController?.navigationBar.barStyle else {
return .default
}
switch navBarStyle {
case .black, .blackTranslucent: return .lightContent
default: return .default
}
}
如this answer所述,您应将 Info.plist 中的基于控制器的状态栏状态栏设置为是