我的应用程序背景是黑色的,但在iOS 7中,状态栏变成了透明的。所以我什么也看不见,只有角落里的绿色电池指示灯。如何将状态栏文本颜色改为白色,就像在主屏幕上一样?


当前回答

这招对我很管用:

在plist中设置UIViewControllerBasedStatusBarAppearance为YES rootViewController需要方法实现 ——(UIStatusBarStyle) preferredStatusBarStyle

因为我的rootViewController是由Cocoapods (JASidePanelController)管理的,我通过一个类别添加了这个方法:

#import "JASidePanelController+StatusBarStyle.h"

@implementation JASidePanelController (StatusBarStyle)

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

@end

其他回答

在AppDelegate。M,添加以下内容。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

在Plist文件中,将“基于视图控制器的状态栏外观”设置为NO。

对我来说,使用其他答案(以及其他来源/文档)中的所有东西都没有发生任何事情。真正有帮助的是在XIB中将导航栏样式设置为“黑色”。这在没有任何代码的情况下将文本更改为白色。

这适用于Golden Master iOS7和Xcode 5 GM种子和2013年9月18日发布的iOS7 SDK(至少导航控制器隐藏):

中的UIViewControllerBasedStatusBarAppearance设置为NO Info.plist。 在ViewDidLoad方法或任何地方,你想改变的地方 状态栏样式: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

在iOS 8中: add NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;对viewDidLoad

我认为所有的答案都不能真正指出问题,因为它们都适用于特定的场景。但如果你需要涵盖所有情况,请遵循以下几点:

根据你需要状态栏灯光样式的位置,你应该始终记住这3点:

1)如果你在启动屏幕或其他地方需要状态栏,而你无法控制它(不是在视图控制器中,而是在一些系统控制的元素/时刻,如启动屏幕) 进入项目设置

2)如果你在导航控制器中有一个控制器 你可以在接口构建器中修改它,如下所示:

a)选择导航控制器的导航栏

b)然后将导航栏的风格设置为“黑色”,因为这意味着你的状态栏下将有一个“黑色”->的黑色背景,所以它将把状态栏设置为白色

或者按照下面的代码来做

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3)如果你有单独的控制器,需要有自己的状态栏风格,它不是作为UINavigationController嵌入在一些容器结构中

设置控制器的状态栏样式: