【问题标题】:Cannot set iOS Status Bar Colour for View无法为视图设置 iOS 状态栏颜色
【发布时间】:2015-07-14 13:02:02
【问题描述】:

我正在使用 Swift 1.2iOS8 开发应用程序。

但是,我遇到了状态栏颜色的问题(带有时间、电池指示器等的颜色)。

在我的Info.plist 文件中,我将UIViewControllerBasedStatusBarAppearance 设置为YES,并将Status bar style 设置为UIStatusBarStyleLightContent,然后在我的故事板中的所有视图控制器中,我将状态栏设置为“轻量级内容”。

这适用于我所有的NavigationViewControllers 和嵌入在NavigationViewControllers 中的视图,但是我有一个普通的TableViewController,它没有嵌入在NavigationController 中,当我以模态方式推送此视图时,状态栏会发生变化变黑!???

即使我在 Storyboard 编辑器中查看视图,它仍显示为白色状态栏(请注意下面屏幕截图右侧的微弱白色电池指示灯):

但是当我在 iPhone 上构建和运行时,状态栏显示为黑色...

这是为什么?我怎样才能解决这个问题?不知道哪里不对。

【问题讨论】:

  • 再添加一个键Status bar style -> UIStatusBarStyleLightContent
  • 是的,已经有了(抱歉,问题中没有提到,但也已经有了)
  • 设法在另一个帖子中找到解决方案:stackoverflow.com/questions/24622960/…

标签: ios swift xcode-storyboard uistatusbar


【解决方案1】:

请确保将具有值NOView controller-based status bar appearance (UIViewControllerBasedStatusBarAppearance) 添加到您的Info.plist

【讨论】:

  • 我已将其设置为“是”...为什么要将其设置为“否”?当我之前将其设置为 NO 时,我遇到了一个不同的问题,即状态栏为白色,但是当我显示 UIImagePicker 然后关闭选择器时,从那时起,状态栏将在整个应用程序中始终为黑色(其中不正确...需要是白色的)
  • 当您选择YES时,每个控制器都可以使用自己的样式。当您将其设置为 NO 时,始终使用 plist 中的设置。
【解决方案2】:

更新:

我从另一篇 StackOverflow 文章 (Swift UIApplication.setStatusBarStyle Doesn't work) 中发现解决方案非常简单。

对于其他想要以编程方式设置状态栏颜色的人,我只是将以下代码插入到我的 ViewController 中以获取相关视图:

- 斯威夫特 4.0+

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent        
}

- 早期的 Swift (4.0-)

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent        
}

【讨论】:

    【解决方案3】:

    这些是UIStatusBar 风格的设置:

    1. 转到AppDelegate.swift,在didFinishLaunchingWithOptions方法中添加下面的代码行:

      UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
      
    2. 将以下键添加到.plist 文件中。

    1. 在 Storyboard 中选择您的控制器 UINavigationControllerUIViewController。并将状态栏样式设置为Light Content

    【讨论】:

    • 在storyboard中选择状态栏的选项实际上已经不可能了。
    【解决方案4】:

    对于 Swift 3

    在你的AppDelegate.swift文件中的函数didFinishLaunchingWithOptions

    UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
    

    【讨论】:

      【解决方案5】:

      将此行添加到您的Appdelegate.swift 文件中:

      UIApplication.sharedApplication().statusBarStyle = .LightContent
      

      【讨论】:

        猜你喜欢
        • 2020-04-21
        • 1970-01-01
        • 2020-01-26
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多