我尝试了SO的几个解决方案来解决这个问题但是没有一个能为我工作。我用一个简单的视图创建了一个新的iOS7项目。我试过设置
View controller-based status bar appearance to NO
并在AppDelegate中:
[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
然而,这会完全删除状态栏。
如果没有基于View控制器的状态栏外观选项,无论我在plist文件中为状态栏样式设置什么,状态栏文本仍然是黑色。我需要它为整个应用程序是白色的。这可能吗?
我正在使用最新的xcode版本。
答案 0 :(得分:38)
你没有“Animated:No”吗?
转到项目目标的信息选项卡,添加行:
UIViewControllerBasedStatusBarAppearance,设置值NO
然后在appdelegate.m
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[application setStatusBarStyle:UIStatusBarStyleLightContent];
}
这应该在应用程序范围内设置。
答案 1 :(得分:27)
接受的答案似乎有时有效。我发现UIViewController也可以改变状态栏样式。为了解决这个问题并且始终有效,因为我不需要控制状态栏的UIViewControllers,我必须在UIViewControllerBasedStatusBarAppearance
NO
设置为Info.plist
答案 2 :(得分:21)
使用needsStatusBarAppearanceUpdate
更新viewDidLoad:
视图控制器方法
[self setNeedsStatusBarAppearanceUpdate];
现在将以下方法添加到视图控制器中:
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
答案 3 :(得分:3)
我会选择Logan的回答。从iOS 9开始,UIApplication的setStatusBarStyle:
方法无论如何都被弃用了,所以你要开始不再使用它了。现在首选的方法是在preferredStatusBarStyle
中实现ViewController
,就像Logan所描述的那样。