一尘不染

如何在iOS中更改状态栏文本颜色

swift

我的应用程序具有深色背景,但是在iOS
7中状态栏变为透明的。所以我看不到任何东西,只有角落的绿色电池指示灯。如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?


阅读 295

收藏
2020-07-07

共1个答案

一尘不染

  1. UIViewControllerBasedStatusBarAppearanceYES在文件的.plist。

  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];

  3. 添加以下方法:

    - (UIStatusBarStyle)preferredStatusBarStyle
    

    {
    return 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,创建一个新的swift文件,名为 HostingController.swift

import Foundation
import UIKit
import SwiftUI

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

然后在 SceneDelegate.swift

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

window.rootViewController = HostingController(rootView: ContentView())
2020-07-07