一尘不染

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

swift

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

对我来说,在任何ViewController中使用以上代码将特定ViewController的statusBar颜色设置为White都
不起作用

。有什么建议?使用UIApplication.sharedApplication方法,颜色会在整个应用程序的Info.plist中进行必要的更改之后更改。

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

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


阅读 330

收藏
2020-07-07

共1个答案

一尘不染

阅读所有建议并尝试了一些方法之后,我可以使用以下步骤将此方法用于特定的视图控制器:

第一步:

打开info.plist,然后将名为“ 基于视图控制器的状态栏外观 ” 的新密钥插入 NO。

第二步(仅作说明,无需实施):

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

迅捷2

UIApplication.sharedApplication().statusBarStyle = .LightContent

迅捷3

UIApplication.shared.statusBarStyle = .lightContent

但这 会影响statusBarStyle所有的ViewController。

因此,如何使它适用于特定的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特定ViewController的,然后将其更改回default特定ViewController消失的时间。不执行viewWillDisappear()statusBarStyle永久更改为的新定义值UIStatusBarStyle.LightContent

2020-07-07