尝试更改UIStatusBar色调颜色

时间:2018-11-24 11:04:33

标签: swift uistatusbar

我正在尝试更改特定UIStatusBar中的UIViewController色彩。

这是我的代码:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    self.setNeedsStatusBarAppearanceUpdate()

}

什么都没发生。

3 个答案:

答案 0 :(得分:1)

在UINavigationController上,未调用preferredStatusBarStyle,因为其topViewController优于self。因此,要在UINavigationController上调用preferredStatusBarStyle,您需要更改其childViewControllerForStatusBarStyle。

要针对一个UINavigationController进行此操作:

class MyRootNavigationController: UINavigationController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    override var childViewControllerForStatusBarStyle: UIViewController? {
        return nil
    }
}

答案 1 :(得分:0)

您可以将扩展名添加到UINavigationController

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

然后为需要光状态栏(白色时间,图标等)的视图控制器,然后覆盖preferredStatusBarStyle

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

对于黑暗的状态栏,您无需执行任何操作。

答案 2 :(得分:0)

您可能需要在info.plist中添加值为“ YES”的“基于View Controller的状态栏外观”