在iOS 7中使用Tint Color可以看到导航栏时,白色状态栏消失

时间:2013-10-13 14:27:16

标签: ios objective-c ios7 uinavigationbar

我有2 UIViewControllers。在第一个UIViewController中,说ViewController1,我隐藏了UINavigationBar。由于我的应用主题为黑色,因此我需要在UIStatusBar中使用白色iOS 7,以便它在黑色UINavigationBar中不会隐藏。为了获得白色UIStatusBar我在iOS 7中使用此方法。

  1. UIViewControllerBasedStatusBarAppearance
  2. 中将YES设置为plist
  3. viewDidLoad执行[self setNeedsStatusBarAppearanceUpdate];
  4. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
      return UIStatusBarStyleLightContent; 
    } 
    
  5. 当我在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一样的白色状态栏? 提前谢谢。

2 个答案:

答案 0 :(得分:6)

您是否尝试将其添加到两个视图控制器

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}

答案 1 :(得分:0)

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

编辑:检查@caglar对上一个答案的评论,以获得更全面的答案。