实时更改状态栏颜色

Change Status Bar Color in Real Time

我正在带有动画的侧边菜单视图控制器 (ENSwiftSideMenu) 中移动。由于侧面菜单的背景颜色是深蓝色,我希望状态栏(默认情况下为黑色)在菜单可见时变亮。
info.plist 中将 View controller-based status bar appearance 设置为 YES(也尝试过 NO),我尝试实现以下代码,不幸的是,它不起作用:

UIApplication.shared.statusBarStyle = .lightContent

此外,我试过这个:

override func viewDidLoad() {
    super.viewDidLoad()
    setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .default
}

知道如何让它发挥作用吗?
谢谢!

试试这个代码:

在您的 AppDelegate 中:

     var navigationBarAppearace = UINavigationBar.appearance()
     navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] // If you want to change title colour
     UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default 

//用下面的代码更新你的 plist

     View controller-based status bar appearance = NO

在你的ViewController中:

    override func viewDidLoad() {
    super.viewDidLoad()

     // UIApplication.sharedApplication().statusBarStyle = .LightContent
    navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.tintColor = UIColor.whiteColor()
    navigationController?.navigationBar.translucent = true
}

func sideMenuWillOpen() {
    print("sideMenuWillOpen")
UIApplication.sharedApplication().statusBarStyle = .LightContent
}

func sideMenuWillClose() {
    print("sideMenuWillClose")
 UIApplication.sharedApplication().statusBarStyle = .Default 
}

上面的输出 code.You 可以使用某种 UIAnimation 来同步效果..

让我 know.If 代码适合你...

直接更新状态栏样式是deprecated,当启用基于视图控制器的状态栏外观时将不起作用。

相反,每个控制器都必须提供其首选状态栏样式,负责显示每个控制器的框架应实现 childViewControllerForStatusBarStyle 并为状态栏外观提供正确的子控制器。不幸的是,ENSwiftSideMenu 不支持它,因此您将很难通过基于视图控制器的状态栏外观来实现它。您应该向原始开发人员提出问题,但我建议您也改用编写得更好的框架。