在我的应用程序中,我有4个ViewController,其中两个我将状态栏从白色更改为黑色,如下所示:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
问题是如果我在两个ViewController之间切换,状态栏上面的代码都会先变为黑色,这是正确的,但是当它进入另一个ViewController时它会再次变为白色。
如何在某些ViewController上保持状态栏为白色?
答案 0 :(得分:0)
尝试在VC中添加以下方法。使用.default或.lightContent更改状态栏颜色。我使用Xcode 8和swift 3测试:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.default;
}
我使用Xcode 7.3.1和swift 2.3创建了一个新的选项卡式应用程序。我有两个选项卡,其中包含与FirstViewController和SecondViewController相关联的类。在FirstViewController中,我添加了以下方法:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.Default;
}
在SecondViewController中,我将背景更改为黑色,并添加了以下方法:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent;
}
最后,我在FirstViewController中添加了两个按钮。一个按钮以模态方式呈现控制器,另一个按钮通过推动呈现。当我以模态方式呈现视图时," preferredStatusBarStyle'工作,但当我通过推送,我需要添加以下代码行:
self.navigationController?.navigationBar.barStyle = .Black
答案 1 :(得分:0)
如果你真的不想覆盖preferredStatusBarStyle的委托方法,你仍然可以使用:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
删除:
self
让我们通过viewWillAppear中发生的事情来设置状态栏。显然这更容易出错,但如果你的导航是相对线性的,那么它将是最简单的解决方案