实时更改状态栏颜色

我正在带有动画的侧面菜单视图控制器( ENSwiftSideMenu )。 由于侧面菜单的背景颜色是深蓝色,我希望状态栏(默认为黑色)在菜单可见时转动。
info.plistView 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 } 

在此处输入图像描述

从上面的代码输出。你可以使用某种UIAnimation同步效果..

让我知道。如果代码适合你…

不推荐直接更新状态栏样式,并且在启用基于视图控制器的状态栏外观时不起作用。

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