繁体   English   中英

实时更改状态栏颜色

[英]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 
}

在此处输入图片说明

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

让我知道。如果代码适合您...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM