ios - UIStatusBar 风格与 UINavigationBar 一致

标签 ios uinavigationcontroller uinavigationbar uistatusbar

只是为了研究UINavigationBarUIStatusBar的UI,我把Navigation Bar Style改成了Black,并且取消勾选Bar visibility,即Shows Navigation Bar,但是UIStatusBar 样式没有更改为 lightContent

似乎如果我们隐藏导航栏,状态栏样式不会根据导航栏的样式而改变,它总是采用默认的 - 即黑色 - 文本,我们必须显式更改状态栏样式。

是否需要设置任何方法或变量以使其依赖于导航栏样式,即使它是隐藏的?

最佳答案

据我所知,没有内置设置可以自动检测导航栏的可见性相应地更改状态栏。如果您想实现这一点,请在您的 View Controller 中覆盖 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 controller-based status bar appearance设置为YES

关于ios - UIStatusBar 风格与 UINavigationBar 一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47980742/

相关文章:

ios - 使用 Push Segue 时 UINavigationController 是否强制

iphone - 弹出一个基本 View 。它会弹出所有 subview 吗?

ios - NSInvalidArgumentException - 无法识别的选择器发送到实例

iOS 应用程序图标和启动画面未针对 PhoneGap 项目更新

ios - 如何使用一个 UIViewController 和两个 UIPickerView?

ios - .xccheckout'仍然存在冲突

objective-c - 使用更新的核心数据模型更新 iOS 应用程序

ios - Storyboard - 在没有 UINavigationController 的情况下弹出到根 UIViewController?

iOS 导航栏在滚动时会被隐藏(也是一种滚动),无论它在 ScrollView 之外

ios - 更改导航栏颜色