【问题标题】:Can't change color of status bar in a SplitViewController无法更改 SplitViewController 中状态栏的颜色
【发布时间】:2019-03-21 07:14:46
【问题描述】:

使用 SplitViewController 时如何更改状态栏的颜色?当只使用带有导航控制器的视图控制器时,状态栏的颜色会通过使用①自动改变。有什么方法可以自动更改状态栏?

我想为我的应用添加暗模式,因此我无法从项目/目标设置中更改状态栏样式。

在我的应用中,我有一个通知可以打开和关闭我的暗模式设置。

我试过了

self.navigationController?.navigationBar.barStyle = .black

②修改info.plist

Status bar Light content doesnot appear in Navigation Controller using Split view controller

这就是它的样子,我用①来改变导航栏的颜色

【问题讨论】:

标签: ios swift uisplitviewcontroller


【解决方案1】:

您可以使用下面的扩展程序。他们得到preferredStatusBarStyle 来自嵌入式 ViewController。您只需要在自定义 ViewController 中覆盖 preferredStatusBarStyle

extension UISplitViewController {
    open override var preferredStatusBarStyle: UIStatusBarStyle {
        let master = viewControllers.first
        return master?.preferredStatusBarStyle ?? .default
    }
}

extension UINavigationController {
    open override var preferredStatusBarStyle: UIStatusBarStyle {
        return topViewController?.preferredStatusBarStyle ?? .default
    }
}

extension UITabBarController {
    open override var preferredStatusBarStyle: UIStatusBarStyle {
        return selectedViewController?.preferredStatusBarStyle ?? .default
    }
}

【讨论】:

  • 感谢您的回答。不过有一个问题,我需要将它添加到我的所有视图控制器还是只添加到自定义拆分视图控制器?
  • 在使用 UISplitViewController 的 Master/Detail 项目上效果很好,谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多