【问题标题】:Swift UIApplication.setStatusBarStyle Doesn't workSwift UIApplication.setStatusBarStyle 不起作用
【发布时间】:2014-07-08 02:53:06
【问题描述】:

这是我在UIViewController 的子类中的实现:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
}

我尝试将它放在 AppDelegate 初始化代码中(使用传入的 UIApplication 实例),但是状态栏仍然是黑色的..

这是 iOS 8 的错误还是我做错了?

注意:我在这里讨论 ios 8 可能违反了某人的法律。这是一个普遍的问题,编译后也不适用于 ios 7。

更新:即使 Info.plist 中的值和 - didFinishLaunchingWithOptions 中的代码,仍然无法正常工作

【问题讨论】:

  • 在设置(info.plist)中添加View Controller-Based Status Bar Appearance并设置为false
  • @JackWu 添加到Info.plist 但不行
  • 设置后尝试在应用代理的applicationDidLoad 中调用UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)。它应该工作......
  • @JackWu 嗯,还是不行:/
  • @drewag 我不想隐藏状态栏,而是从dark -> light改变它的颜色

标签: ios swift ios8 uistatusbar


【解决方案1】:

你真的应该在你的视图控制器上实现preferredStatusBarStyle

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

【讨论】:

    【解决方案2】:
    1. 转到 Info.plist 文件
    2. 将鼠标悬停在其中一行和 (+) 和 (-) 上 按钮将出现。
    3. 单击加号按钮添加新密钥 以大写V开头,第一选择会自动成为View 基于控制器的状态栏外观
    4. 将其添加为 KEY。
    5. 将 VALUE 设置为“否”
    6. 转到您的 AppDelegate.swift
    7. 在方法中添加以下代码
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
        application.setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
    
        return true
    }
    
    1. 完成!运行您的应用,您的状态栏现在是白色的!

    【讨论】:

    • 不错。不过,我使用 cmets 弄清楚了。两个答案都是正确的(当前接受的答案+这个答案)
    • UIApplication 的“setStatusBarStyle”方法自 iOS 9 起已弃用。覆盖“preferredStatusBarStyle”似乎是更改状态栏文本颜色的首选方式。
    猜你喜欢
    • 2016-08-26
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多