小编典典

在 iOS8 中使用 Swift 更改特定 ViewController 的状态栏颜色

all

override func preferredStatusBarStyle() -> UIStatusBarStyle {
 return UIStatusBarStyle.LightContent;
}

在任何 ViewController 中使用上述代码将特定视图控制器的状态栏颜色设置为白色 对我来说在 iOS8 中不起作用
。有什么建议么?使用 UIApplication.sharedApplication 方法,在整个应用程序的 Info.plist
中进行所需更改后,颜色会发生变化。

// Change the colour of status bar from black to white
UIApplication.sharedApplication().statusBarStyle = .LightContent

如何更改某些必需和 特定 ViewControllers 的状态栏颜色?


阅读 76

收藏
2022-06-18

共1个答案

小编典典

在阅读了所有建议并尝试了一些事情之后,我可以使用以下步骤使其适用于特定的视图控制器:

第一步:

打开你的 info.plist 并插入一个名为“ 查看基于控制器的状态栏外观 ”的新键到 NO

第二步(只是解释,不需要实现):

通常我们在 AppDelegate 的 application(_:didFinishLaunchingWithOptions:) 方法中放入如下代码,

斯威夫特 2

UIApplication.sharedApplication().statusBarStyle = .LightContent

斯威夫特 3

UIApplication.shared.statusBarStyle = .lightContent

但这 会影响statusBarStyle所有 ViewControllers。

那么,如何使它适用于特定的 ViewController - 最后一步:

打开要更改的视图控制器文件,statusBarStyle然后将以下代码放入viewWillAppear()

斯威夫特 2

UIApplication.sharedApplication().statusBarStyle = .LightContent

斯威夫特 3

UIApplication.shared.statusBarStyle = .lightContent

此外,实现该viewWillDisappear()特定 viewController 的方法并放入以下代码行,

斯威夫特 2

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default

}

斯威夫特 3

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}

此步骤将首先更改statusBarStyle特定视图控制器的
,然后将其更改回default特定视图控制器消失时。不执行viewWillDisappear()statusBarStyle永久更改为新定义的值UIStatusBarStyle.LightContent

2022-06-18