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


当前回答

这对我来说真是小菜一碟。

去你的应用的info.plist。

“查看基于控制器的状态栏外观”设置为“否” 设置状态栏样式为UIStatusBarStyleLightContent

然后转到你的应用程序的委托,并粘贴下面的代码,你设置你的窗口的RootViewController。

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

宾果。这对我很有用。

其他回答

在Plist中添加以下内容:

状态栏样式:UIStatusBarStyleLightContent 基于视图控制器的状态栏外观:NO

注:最高赞数的答案不适用于iOS 7 / 8

在信息。plist设置“视图基于控制器的状态栏外观”为NO

在AppDelegate中添加

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

to

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

此解决方案适用于iOS 7 / 8。

如果你想用Swift得到同样的结果,你可以在你的AppDelegate.swift文件中使用下面的代码:

UINavigationBar.appearance().barStyle = .BlackTranslucent

你的状态栏的文本将是白色的:-)!

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

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

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

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

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

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

或者按照下面的代码来做

navigationController?.navigationBar.barStyle = UIBarStyle.Black

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

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

如果你仍然想使用基于视图控制器的状态栏的信息外观。plist设置为YES,这意味着你可以改变每个视图控制器的状态栏,在ViewDidLoad的状态栏中使用下面的白色文本:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];