如何在iOS7上将状态栏样式设置为轻量级内容?

时间:2014-03-20 20:10:55

标签: xcode ios7

我尝试了SO的几个解决方案来解决这个问题但是没有一个能为我工作。我用一个简单的视图创建了一个新的iOS7项目。我试过设置

View controller-based status bar appearance to NO

并在AppDelegate中:

[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

然而,这会完全删除状态栏。

如果没有基于View控制器的状态栏外观选项,无论我在plist文件中为状态栏样式设置什么,状态栏文本仍然是黑色。我需要它为整个应用程序是白色的。这可能吗?

我正在使用最新的xcode版本。

4 个答案:

答案 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所描述的那样。