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

Can't change color of status bar in a SplitViewController

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

我想为我的应用程序添加深色模式,所以我无法通过 project/target 设置更改状态栏样式。

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

我试过了

self.navigationController?.navigationBar.barStyle = .black

②改变info.plist

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

这就是它的样子,我正在使用①来更改导航栏的颜色

您可以使用下面的扩展程序。他们得到 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
    }
}