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

Yut*_*uto 1 uisplitviewcontroller ios swift

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

\n\n

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

\n\n

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

\n\n

我努力了

\n\n

\xe2\x91\xa0self.navigationController?.navigationBar.barStyle = .black

\n\n

\xe2\x91\xa1更改 info.plist

\n\n

\xe2\x91\xa2状态栏浅色内容不会出现在使用分割视图控制器的导航控制器中

\n\n

这就是它的样子,我正在使用 \xe2\x91\xa0 来更改导航栏的颜色\n

\n

小智 5

您可以使用下面的扩展。它们preferredStatusBarStyle 从嵌入式 ViewController 中获取。您只需要preferredStatusBarStyle在自定义 ViewController 中 覆盖

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
    }
}
Run Code Online (Sandbox Code Playgroud)