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


当前回答

如果你的应用程序需要有UIStatusBarStyleLightContent默认,但你仍然想有能力在某些屏幕上使用UIStatusBarStyleDefault,你可以选择在控制器级别上管理状态栏颜色,但在这种情况下,你必须在每个视图控制器中覆盖preferredStatusBarStyle(或在一个基本视图控制器中实现它,从它所有其他视图控制器将继承)。这里有另一种解决这个问题的方法:

在plist中设置UIViewControllerBasedStatusBarAppearance为NO 设置UIStatusBarStyle为UIStatusBarStyleLightContent

所有视图控制器的状态栏都将使用白色文本。现在只在需要带有黑色文本的状态栏的视图控制器中添加这些方法:

-(void)viewWillAppear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}    

-(void)viewWillDisappear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}    

其他回答

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

在AppDelegate中添加

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Xcode GM Seed的答案更新:

在信息。plist将基于视图控制器的状态栏外观设置为NO 在项目中,设置: 在ViewDidLoad: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

如果你的应用程序需要有UIStatusBarStyleLightContent默认,但你仍然想有能力在某些屏幕上使用UIStatusBarStyleDefault,你可以选择在控制器级别上管理状态栏颜色,但在这种情况下,你必须在每个视图控制器中覆盖preferredStatusBarStyle(或在一个基本视图控制器中实现它,从它所有其他视图控制器将继承)。这里有另一种解决这个问题的方法:

在plist中设置UIViewControllerBasedStatusBarAppearance为NO 设置UIStatusBarStyle为UIStatusBarStyleLightContent

所有视图控制器的状态栏都将使用白色文本。现在只在需要带有黑色文本的状态栏的视图控制器中添加这些方法:

-(void)viewWillAppear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}    

-(void)viewWillDisappear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}    

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

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

在AppDelegate中添加

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

to

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

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

总结一下,编辑你的项目信息。Plist并添加:

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

状态栏样式:不透明的黑色样式

或者如果你有raw key/value plist

uiviewcontrollerbasedstatusbar外观:NO

UIStatusBarStyle:不透明黑色风格