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


当前回答

只需以下两步:

步骤1:

在项目目标的Info选项卡下,添加行:

UIViewControllerBasedStatusBarAppearance,设置值NO。

步骤2:

在项目AppDelegate.m中:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

其他回答

这似乎是当前Xcode和iOS 7的一个问题。

在苹果开发者论坛*的“iOS 7 Beta Livability”中搜索UIStatusBarStyleLightContent(目前有32个帖子),可以看到苹果开发者论坛上的一些相关内容。

我在把它调到浅色的时候偶然发现的。

(这只是对Aaron回答的一个补充。)

在.plist文件中设置UIViewControllerBasedStatusBarAppearance为YES。 在viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate]; 增加如下方法: ——(UIStatusBarStyle) preferredStatusBarStyle { 返回UIStatusBarStyleLightContent; }

注意:这并不适用于UINavigationController内部的控制器,请参阅Tyson的评论如下:)

Swift 3 -这将工作在UINavigationController中的控制器。将此代码添加到控制器中。

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5和SwiftUI

对于SwiftUI,我创建了一个名为HostingController.swift的新swift文件

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

然后更改SceneDelegate.swift中的以下代码行

window.rootViewController = UIHostingController(rootView: ContentView())

to

window.rootViewController = HostingController(rootView: ContentView())

转到项目->目标, 然后设置“状态栏样式”为“亮”。它使状态栏从启动屏幕变成白色。 然后在Info.plist中将“基于视图控制器的状态栏外观”设置为“NO”。

只需以下两步:

步骤1:

在项目目标的Info选项卡下,添加行:

UIViewControllerBasedStatusBarAppearance,设置值NO。

步骤2:

在项目AppDelegate.m中:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

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

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

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];