我有2 UIViewControllers
。在第一个UIViewController
中,说ViewController1
,我隐藏了UINavigationBar
。由于我的应用主题为黑色,因此我需要在UIStatusBar
中使用白色iOS 7
,以便它在黑色UINavigationBar
中不会隐藏。为了获得白色UIStatusBar
我在iOS 7
中使用此方法。
UIViewControllerBasedStatusBarAppearance
YES
设置为plist
viewDidLoad
执行[self
setNeedsStatusBarAppearanceUpdate];
添加以下方法:
-(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一样的白色状态栏? 提前谢谢。
答案 0 :(得分:6)
您是否尝试将其添加到两个视图控制器
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
答案 1 :(得分:0)
您可能只是缺少plist所需的属性:将基于控制器的状态栏外观视为NO。
编辑:检查@caglar对上一个答案的评论,以获得更全面的答案。