Ios 实时更改状态栏颜色

Ios 实时更改状态栏颜色,ios,swift,uiviewcontroller,statusbar,Ios,Swift,Uiviewcontroller,Statusbar,我正在侧菜单视图控制器()中移动,带有动画。由于侧菜单的背景颜色是深蓝色,我希望状态栏(默认为黑色)在菜单可见时亮起。 在info.plist中,将查看基于控制器的状态栏外观设置为是(也尝试了否),我试图实现以下代码,但不幸的是,这些代码不起作用: UIApplication.shared.statusBarStyle = .lightContent 此外,我尝试了以下方法: override func viewDidLoad() { super.viewDidLoad() s

我正在侧菜单视图控制器()中移动,带有动画。由于侧菜单的背景颜色是深蓝色,我希望状态栏(默认为黑色)在菜单可见时亮起。
info.plist
中,将
查看基于控制器的状态栏外观
设置为
(也尝试了
),我试图实现以下代码,但不幸的是,这些代码不起作用:

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 
}

以上代码的输出。您可以使用某种UIAnimation来同步效果


让我知道。如果代码对您有效…

则直接更新状态栏样式是无效的,并且在启用基于视图控制器的状态栏外观时将不起作用


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

如果我理解正确。您希望您的EnswitftSideMenu状态栏为深蓝色,mainVC状态栏为正常或不同颜色…不,我希望侧菜单显示时状态栏为白色。代码再次更新。希望,这次我理解正确了…谢谢你的努力,但我不想为状态栏设置背景,但状态栏的内容实际上会变亮。