99

我知道这已经是一些stackoverflow 问题,说明如何更改所有视图控制器的状态栏。我目前正在以这种方式更改状态栏的颜色:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

在里面application:DidFinishLaunching

此外,我已将UIViewControllerBasedStatusBarAppearanceplist 中的值更改为NO. 但是,在启动画面中,它仍然以黑色显示状态栏文本。

是否可以更改初始屏幕中状态栏文本颜色的颜色?

4

6 回答 6

226

在项目 plist 文件中添加“状态栏样式”属性(键是UIStatusBarStyle)。然后忽略该属性下拉列表中列出的所有可能值,然后键入UIStatusBarStyleLightContent

而且您不必在您的 plist 中设置,您可以将UIViewControllerBasedStatusBarAppearance您想要的设置为您的视图控制器。NOpreferredStatusBarStyle

于 2013-09-19T15:22:47.843 回答
33

您可以在不编写任何代码的情况下执行此操作
执行以下操作以使整个应用程序的状态栏文本颜色为白色

在您的项目 plist文件中:

  • 状态栏样式:UIStatusBarStyleLightContent
  • 查看基于控制器的状态栏外观:NO
  • 状态栏最初是隐藏的:NO
于 2013-11-06T17:15:46.693 回答
19

您可以执行以下操作以在整个应用程序中获取浅色状态栏。

  1. 在项目导航器中选择项目的名称。
  2. 从项目编辑器左列的列表中选择目标的名称。
  3. 单击项目编辑器顶部的常规。
  4. 设置状态栏样式 -> 灯光

在您的 plist 文件中添加以下值:

  1. 状态栏样式 - UIStatusBarStyleLightContent
  2. 查看基于控制器的状态栏外观 - 否

这将帮助您在整个应用程序(包括 SPLASH SCREEN)中获得白色状态栏。

于 2014-11-28T07:25:57.003 回答
7

UIViewControllerBasedStatusBarAppearance在 plist 中设置为 No

然后在完成启动选项中添加以下代码

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

请按照对我有用的代码

于 2013-09-24T05:39:48.243 回答
2

这是关于状态栏更改的Apple 指南/说明。

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

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

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

  1. 如果您只需要在 UIViewController 级别设置状态栏样式,请在文件中设置UIViewControllerBasedStatusBarAppearanceto 。YES.plist
  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
    }

}



这是结果:

在此处输入图像描述

于 2017-10-27T07:53:49.080 回答
1

您可以执行以下操作以在整个应用程序中获取浅色状态栏。

在项目导航器中选择项目的名称。从项目编辑器左列的列表中选择目标的名称。单击项目编辑器顶部的常规。设置状态栏样式 -> 灯光

于 2016-08-05T09:27:28.983 回答