当导航栏在 iOS 7 中以色调颜色显示时,白色状态栏将消失



我有 2 个UIViewControllers .在第一个UIViewController,比如说ViewController1,我把UINavigationBar隐藏起来。由于我的应用程序的主题是黑色,所以我需要在iOS 7中使用白色UIStatusBar,这样它就不会在黑色UINavigationBar中变得不可见。为了获得白色UIStatusBar我在iOS 7中使用此方法。

  1. UIViewControllerBasedStatusBarAppearance设置为plist中的YES
  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];
  3. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
      return UIStatusBarStyleLightContent; 
    } 
    

当我在视图控制器1中时,它工作正常。但是当我移动到 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; 

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

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

您是否

尝试过将其添加到两个视图控制器

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}

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

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

最新更新