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


当前回答

如果你的UIViewController在UINavigationController中,你必须设置BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

原始答案在这里

https://devforums.apple.com/message/844264#844264

其他回答

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

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

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

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

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

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

或者按照下面的代码来做

navigationController?.navigationBar.barStyle = UIBarStyle.Black

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

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

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

你可以从info.plist:

1)“基于视图控制器的状态栏外观”设置为“NO”

2)“状态栏样式”设置为“UIStatusBarStyleLightContent”

done

删除。plist文件中基于视图控制器的状态栏外观(如果你有create)并重新创建它。 设置状态栏样式为不透明黑色样式

在appDelegate中,在didFinishLaunching下添加以下代码。

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

iOS 7允许单独的视图控制器来决定状态栏的外观,如苹果开发者文档所述:

ios7允许视图控制器在应用程序运行时调整状态栏的样式。动态改变状态栏样式的一个好方法是实现preferredStatusBarStyle并在一个动画块内更新状态栏外观并调用setNeedsStatusBarAppearanceUpdate。

全局设置状态栏外观是一个两步过程。

首先,你需要告诉iOS你不想按视图来设置状态栏外观。

然后你需要负责并实际设置新的全局状态栏样式。

要禁用逐视图状态栏控件,您需要在Info.plist中设置基于视图控制器的状态栏外观属性。

打开项目导航器,选择iOS应用程序的项目,然后选择信息选项卡。

将鼠标悬停在一行上,然后单击出现的加号,将新属性添加到.plist。

在Key字段中输入基于视图控制器的状态栏外观,然后确保Type字段设置为Boolean。最后,在Value字段中输入NO。

要为状态栏设置全局样式,在Info选项卡下添加另一个属性,键为状态栏样式,类型为字符串,值为不透明黑色样式。

下面是一篇博客文章,其中有更多的细节和一些示例代码:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/