StatusBarStyle在iOS 9上无法正常工作

时间:2015-10-03 05:12:54

标签: ios objective-c swift xcode7

我想在我的swift应用程序上获取以下StatusBarStyle:

enter image description here

我的AppDelegate使用UINavigationController,如下所示

self.nav = UINavigationController(rootViewController: controller!)

所以我尝试将UIBarStyle设置为Black,如下所示:

    self.nav?.navigationBar.barStyle = UIBarStyle.Black

然而,这导致以下结果:

enter image description here

BTW,在我的Info.plist上,我有以下设置

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

这些设置会在LaunchScreen上产生所需的状态栏样式,但不会在其他屏幕上产生。

我甚至尝试将以下方法添加到UINavigationController

中的所有VC
override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.Default
}

但这导致以下状态栏样式:

enter image description here

在iOS 9上有UINavigationController的情况下,获得所需状态栏样式的最佳方法是什么?

此外,如果我删除plist条目并设置

 self.nav?.navigationBar.barStyle = UIBarStyle.Black 

在AppDelegate中,我得到以下结果:

white_text_on_gray_background_status_bar_style

此外,我删除了所有设置backgroundColor的地方,除了AppDelegate中的以下内容(colorOne是我想要的状态栏上的deepBlue颜色)

self.window?.backgroundColor = colorOne

当我这样做时,状态栏上会出现浅蓝色,这是我在状态栏上所需的深蓝色最接近的颜色,如此处所示

black_text_on_light_blue_status_bar

2 个答案:

答案 0 :(得分:4)

在appDelegate中使用:

  UINavigationBar.appearance().barTintColor = UIColor.redColor()
  UINavigationBar.appearance().translucent = false

显然你可以使用你想要的任何UIColor ......

答案 1 :(得分:0)

我希望这对你有帮助..

如果你需要特定的颜色,你如何使用RGB是最好的选择:

  UINavigationBar.appearance().barTintColor = UIColor(red: 5.0, green: 8.0, blue: 9.0, alpha:0.5) 

如果它不起作用,那么试试这个:     var navigationBarAppearace = UINavigationBar.appearance()

    navigationBarAppearace.tintColor = UIColor.whiteColor()
    navigationBarAppearace.barTintColor = UIColor(red:15/255.0, green:  167/255.0, blue: 216/255.0, alpha: 1.0)