如何更改状态栏文本颜色。附上截图

How can I change my status bar text color. Screenshot attached

我想将状态栏文本颜色更改为客户颜色,如所附截图。

我用它来使内容变得轻盈 -

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

但是文字颜色没有改变。有人可以帮忙吗?

状态栏的文本颜色可以是白色或黑色。

.plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 YES

viewDidLoad方法中,做一个

[self setNeedsStatusBarAppearanceUpdate];

添加以下方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

这里是关于状态栏变化的Apple Guidelines/Instruction。状态栏中只允许 Dark & light (while & black)。它不允许在状态栏中设置颜色(粉红色,如您的图片所示)。

这是-如何更改状态栏样式:

如果你想设置状态栏样式,应用级别然后在你的`.plist'文件中设置UIViewControllerBasedStatusBarAppearanceNO

如果您想在视图控制器级别设置状态栏样式,请按照以下步骤操作:

  1. 如果您只需要在 UIViewController 级别设置状态栏样式,请在 .plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 YES
  2. 在viewDidLoad中添加函数——setNeedsStatusBarAppearanceUpdate

  3. 在您的视图控制器中覆盖 preferredStatusBarStyle。

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

根据状态栏样式设置级别设置.plist的值。


您可以在应用程序启动期间或视图控制器的 viewDidLoad 期间为状态栏设置背景颜色。

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



这是结果:

如果您的应用程序将支持在您的应用程序的 Info.plist 中,将 "View controller-based status bar appearance" 设置为 NO.

appDelegate.swift中,在didFinishLaunchingWithOptions函数内,添加:

UIApplication.shared.statusBarStyle = .lightContent

此处描述了最佳答案: