UIStatusBar 风格与 UINavigationBar 一致
UIStatusBar style consistent with UINavigationBar
为了研究UINavigationBar
和UIStatusBar
的UI,我把Navigation Bar Style改成Black,并且取消勾选Bar visibility,即Shows Navigation Bar,但是UIStatusBar
样式没有更改为 lightContent
.
似乎如果我们隐藏导航栏,状态栏样式不会根据导航栏的样式而改变,它总是采用默认 - 即黑色 - 文本,我们必须显式更改状态栏样式.
是否需要设置任何方法或变量以使其依赖于导航栏样式,即使它是隐藏的?
据我所知,没有自动检测导航栏可见性的内置设置并且相应地更改状态栏。如果您想实现这一目标,请在视图控制器中覆盖 preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
guard let navBarStyle = navigationController?.navigationBar.barStyle else {
return .default
}
switch navBarStyle {
case .black, .blackTranslucent: return .lightContent
default: return .default
}
}
如所述,您应该在 Info.plist[=22= 中设置 基于视图控制器的状态栏外观 ] 到 YES.
为了研究UINavigationBar
和UIStatusBar
的UI,我把Navigation Bar Style改成Black,并且取消勾选Bar visibility,即Shows Navigation Bar,但是UIStatusBar
样式没有更改为 lightContent
.
似乎如果我们隐藏导航栏,状态栏样式不会根据导航栏的样式而改变,它总是采用默认 - 即黑色 - 文本,我们必须显式更改状态栏样式.
是否需要设置任何方法或变量以使其依赖于导航栏样式,即使它是隐藏的?
据我所知,没有自动检测导航栏可见性的内置设置并且相应地更改状态栏。如果您想实现这一目标,请在视图控制器中覆盖 preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
guard let navBarStyle = navigationController?.navigationBar.barStyle else {
return .default
}
switch navBarStyle {
case .black, .blackTranslucent: return .lightContent
default: return .default
}
}
如