4

我有 2 UIViewControllers。首先UIViewController,比如说ViewController1,我一直在UINavigationBar隐藏。由于我的应用程序的主题是 black ,所以我需要 white UIStatusBariniOS 7这样它就不会在 black 中变得不可见UINavigationBar。为了变白UIStatusBar,我在iOS 7.

  1. 设置UIViewControllerBasedStatusBarAppearanceYES_plist
  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];
  3. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
      return UIStatusBarStyleLightContent; 
    } 
    

当我在 ViewController1 时它工作正常。但是当我移动到 ViewController2 时,如果我设置

self.navigationController.navigationBarHidden = NO 

在我的viewDidLoad方法中。然后上面的白色代码UIStatusBar不起作用。UIStatusBar变黑了,我看不到它,因为我正在使用以下代码来自定义我的UINavigationBar

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
self.navigationController.navigationBar.translucent = NO; 

如果我UINavigationBar像 ViewController1 一样保持隐藏,那么白色UIStatusBar再次可见。但是当UINavigationBar可见时,状态栏再次变黑。那就是问题所在。

任何人都可以在这种情况下帮助我,我怎样才能获得像我的 ViewController1 这样的白色状态栏?提前致谢。

4

2 回答 2

6

Have you tried adding this to both view controllers

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}
于 2014-01-06T17:11:20.793 回答
0

您可能只是缺少 plist 上所需的属性:查看基于控制器的状态栏外观为 NO。

编辑:检查@caglar 对先前答案的评论,以获得对一般需求的更全面的答案。

于 2014-03-27T10:09:54.740 回答