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


当前回答

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

-[UINavigationBar setBarStyle:UIBarStyleBlack]

原始答案在这里

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

其他回答

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

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

这些对我来说都没用,所以这里有一个有效的解决方案……

在信息。Plist,添加一行:

UIViewControllerBasedStatusBarAppearance,并设置值为NO。

然后在AppDelegate的didFinishLaunchingWithOptions中添加这些行:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

改变所有viewcontroller的状态栏文本颜色

斯威夫特3

if在Info.plist中查看基于控制器的状态栏外观= YES

然后使用这个扩展为所有NavigationController

extension UINavigationController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
     }
 }

如果没有UINavigationController,只有UIViewController,那么使用下面的代码:

extension UIViewController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
     }
 }

objective - c

创建类别类

对于UIView控制器

在ui + StatusBarStyle.h

 @interface UIViewController (StatusBarStyle)
 @end

在ui + StatusBarStyle.m

 #import "UIViewController+StatusBarStyle.h"

 @implementation UIViewController (StatusBarStyle)
 -(UIStatusBarStyle)preferredStatusBarStyle
 {
  return UIStatusBarStyleLightContent;
 }
 @end 

对于UINavigationController

在UINavigationController + StatusBarStyle.h

 @interface UINavigationController (StatusBarStyle)
 @end

在UINavigationController + StatusBarStyle.m

 #import "UINavigationController+StatusBarStyle.h"

 @implementation UINavigationController (StatusBarStyle)
 -(UIStatusBarStyle)preferredStatusBarStyle
 {
  return UIStatusBarStyleLightContent;
 }
 @end  

如果我使用UINavigationController,我在iOS 9和Swift 2.0中做这个

self.navigationController?.navigationBar.barStyle = UIBarStyle.Black

如果我使用模态segue

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}

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