如何改变iOS中状态栏的文本颜色

我的应用程序有一个深色背景,但在iOS 7中,状态栏变得透明。所以我看不到任何东西,只有角落里的绿色电池指示灯。我怎样才能把状态栏的文字颜色改为白色,就像在主屏幕上那样?

解决办法

1.在.plist文件中把UIViewControllerBasedStatusBarAppearance设为YES

2.2.在viewDidLoad中做一个[self setNeedsStatusBarAppearanceUpdate];

3.添加以下方法。

    - (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 {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

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

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

改为

window.rootViewController = HostingController(rootView: ContentView())
评论(18)

这在iOS 7 UI过渡指南中有记载,你需要一个苹果开发者ID才能直接访问。相关的节选。

因为状态栏是透明的,它后面的视图会显示出来。[...] 使用UIStatusBarStyle常量来指定状态栏的内容应该是深色还是浅色。

UIStatusBarStyleDefault显示深色内容。[...]

UIStatusBarStyleLightContent显示浅色内容。当状态栏后面有深色内容时使用。

也可能感兴趣。

在iOS 7中,你可以从一个单独的vew控制器控制状态栏的样式,并在应用运行时改变它。要选择这种行为,请将UIViewControllerBasedStatusBarAppearance键添加到应用程序的Info.plist文件中,并将其值改为YES

我肯定会推荐你看一下这个文件,你可以用你的苹果开发者ID访问它。

评论(3)

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

苹果开发者论坛上的一些相关内容在[在"iOS 7 Beta Livability"中搜索UIStatusBarStyleLightContent][1]*(目前有32篇文章)。

我遇到了它,想把它设置为轻量级版本。

(这只是对Aaron'的回答的跟进)。

[1]: https://devforums.apple.com/search.jspa?q=UIStatusBarStyleLightContent&resultTypes=MESSAGE& peopleEnabled=true& communityID=2345& dateRange=last90days& username=& numResults=15

评论(0)