我有 2 个UIViewControllers
.在第一个UIViewController
,比如说ViewController1
,我把UINavigationBar
隐藏起来。由于我的应用程序的主题是黑色,所以我需要在iOS 7
中使用白色UIStatusBar
,这样它就不会在黑色UINavigationBar
中变得不可见。为了获得白色UIStatusBar
我在iOS 7
中使用此方法。
- 将
UIViewControllerBasedStatusBarAppearance
设置为plist
中的YES
- 在
viewDidLoad
做一个[self setNeedsStatusBarAppearanceUpdate];
-
添加以下方法:
-(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对先前答案的评论,以获得对一般需要的更全面的答案。