UIStatusBar样式与UINavigationBar一致

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIStatusBar样式与UINavigationBar一致相关的知识,希望对你有一定的参考价值。

为了研究UINavigationBarUIStatusBar的用户界面,我将导航栏样式更改为黑色,并取消选中栏可见性,即显示导航栏,但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
    }
}

正如this answer所描述的那样,您应该将Info.plist中基于View控制器的状态栏外观设置为YES。

以上是关于UIStatusBar样式与UINavigationBar一致的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中自定义 UIStatusBar

在 UIStatusBar 上设置与 UINavigationBar 相同的背景颜色

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?

iOS7.0后隐藏状态栏(UIStatusBar)