【问题标题】:Color text of status bar in XCode 6-b3 (Swift)XCode 6-b3(Swift)中状态栏的彩色文本
【发布时间】:2014-07-14 21:47:35
【问题描述】:

我尝试修改状态栏颜色文本,但this thread 的任何一个答案都不起作用。 有没有特别适用于 XCode 6 的?

我试过插入:

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

UIViewController

还有

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

AppDelegate.swift 我已经尝试在info.plist 中更改它 但这不影响它。如何将状态栏颜色文字改为白色?

【问题讨论】:

    标签: swift xcode6


    【解决方案1】:

    在 Info.plist 中,您需要将 基于控制器的状态栏外观定义为任意值。

    如果您定义它YES,那么您应该在每个视图控制器中覆盖preferredStatusBarStyle 函数。

    如果你定义它NO那么你可以在AppDelegate使用

    设置样式

    UIApplication.sharedApplication().statusBarStyle = .LightContent

    【讨论】:

    • 我明白了!我只是在 info.plist 中没有“查看基于控制器的状态栏外观”。我手动添加并定义。谢谢。
    • 我会尝试很多方法,但是我无法让它改变 UIStatusBar 的颜色 :(
    • @JorgeVicenteMendoza,它总是透明的吗?
    • 永远黑暗!我确实尝试在 info.plist 中添加值,尝试覆盖视图控制器中调用 self.setNeedsStatusBarAppearanceUpdate() 的函数(用于在 iOS7 中工作),但无法使其变亮
    • Xcode 6,使用 Swift: 1. Info.plist,添加此属性: View controller-based status bar = NO 2. 在 AppDelegate.swift 中的 applicationDidFinishLaunching 中,添加此行: UIApplication.sharedApplication( ).statusBarStyle = UIStatusBarStyle.LightContent
    【解决方案2】:

    只需在您的 plist 中设置 " View controller-based status bar appearance == NO " 并在 didfinshLaunching 方法中的 appdelegate 类中添加一行。 p>

     UIApplication.sharedApplication().statusBarStyle = .LightContent
    

    【讨论】:

      【解决方案3】:

      Swift 3.0

      只需将View controller-based status bar appearance == NO 设置为您的*.plist 并在didFinishLaunchingWithOptions 方法中的return 之前将以下代码放入您的appdelegate 类中。

      let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
      if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
          statusBar.backgroundColor = UIColor.red
      }
      UIApplication.shared.statusBarStyle = .lightContent
      

      您可以根据需要更改backgroundColorstatusBarStyle

      【讨论】:

        【解决方案4】:

        确保将 info.plist 文件中的 View controller-based status bar appearance 设置为 Yes

        此外,如果你在一个 UINavigationController 中,你不能简单地在其中设置 ViewControllers 中的样式。子类化 UINavigationController 并将其添加到其中:

        override func preferredStatusBarStyle() -> UIStatusBarStyle {
        
            if let vc = self.viewControllers?.last as? UIViewController {
                return vc.preferredStatusBarStyle()
            }
        
            return super.preferredStatusBarStyle()
        }
        

        现在您可以在 UIViewController 子类中设置栏样式,UINavigationController 会监听它:)。

        【讨论】:

          【解决方案5】:

          Keenle 是正确的,从 iOS7 开始,您必须先选择退出基于 viewController 的状态栏样式,然后才能在应用范围内设置它。

          doc:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/setStatusBarStyle:animated:

          “要退出基于视图控制器的状态栏外观行为,您必须将值为 NO 的 UIViewControllerBasedStatusBarAppearance 键添加到应用的 Info.plist 文件中,但不建议这样做。”

          【讨论】:

          • 这应该是评论,而不是答案!
          猜你喜欢
          • 1970-01-01
          • 2022-01-10
          • 2015-10-09
          • 1970-01-01
          • 2014-11-06
          • 2017-08-18
          • 2014-02-27
          • 1970-01-01
          • 2020-11-18
          相关资源
          最近更新 更多