无法在SplitViewController中更改状态栏的颜色

时间:2019-03-21 07:14:46

标签: ios swift uisplitviewcontroller

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

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

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

我尝试过

self.navigationController?.navigationBar.barStyle = .black

②更改info.plist

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

这是它的外观,我正在使用①更改导航栏的颜色

1 个答案:

答案 0 :(得分: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
    }
}