preferredStatusBarStyle在iOS 13上不适用

时间:2019-10-02 14:45:01

标签: ios swift

我正在模拟器中使用深色背景的单视图应用程序。这是一个包装在UINavigationController中的UIViewController。

在我的视图控制器中,我有override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent }

在我的info.plist中,我有View controller-based status bar appearance = YES

但是当我运行它时,它显示白色一秒钟,然后跳到显示黑色文本。

这是怎么回事?有解决办法吗?

编辑:为确保没有任何效果,我已经尝试过.default.lightContent.darkContent

2 个答案:

答案 0 :(得分:5)

我最近遇到了这个问题,这些扩展程序似乎可以解决该问题。

extension UITabBarController {
    open override var childForStatusBarStyle: UIViewController? {
        return selectedViewController?.childForStatusBarStyle ?? selectedViewController
    }
}

extension UINavigationController {
    open override var childForStatusBarStyle: UIViewController? {
        return topViewController?.childForStatusBarStyle ?? topViewController
    }
}

我只是将它们放入名为UIViewController+StatusBar.swift的文件中,并将其包含在项目中。

答案 1 :(得分:0)

@matt引用的正确答案是navigationController?.navigationBar.barStyle = .lightContent中的viewDidLoad