为了研究UINavigationBar和UIStatusBar的UI,我将导航条样式更改为黑色,不检查条形可见性,即显示导航条,但UIStatusBar样式没有更改为lightContent。
看起来,如果我们隐藏导航栏,状态栏样式不会根据导航栏的样式而改变,它总是采用默认的--即黑文字--并且我们必须显式地更改状态栏样式。
我们是否需要设置任何方法或变量来保持它依赖于导航条样式,即使它是隐藏的?
发布于 2017-12-27 01:04:39
据我所知,没有内置设置可以自动检测导航条的可见性并相应地更改状态栏。如果要实现这一点,请在视图控制器中重写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中将基于视图控制器的状态栏外观设置为YES。
https://stackoverflow.com/questions/47980742
复制相似问题