【问题标题】:UIStatusBar style consistent with UINavigationBarUIStatusBar 风格与 UINavigationBar 一致
【发布时间】:2017-12-26 15:41:30
【问题描述】:

只是为了研究UINavigationBarUIStatusBar的UI,我把Navigation Bar Style改成了Black,并且取消了Bar的可见性,即Shows Navigation Bar,但是UIStatusBar的风格并没有改成@987654324 @。

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

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

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationbar uistatusbar


    【解决方案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 中将基于控制器的状态栏外观 设置为YES

    【讨论】:

    • 我一定会试一试,并在此问题上与您联系。感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多