UIStatusBarStyle无法在Swift中运行

 我还没公主 发布于 2023-01-09 10:23

我正在尝试将我的Swift应用程序中的状态栏颜色更改为白色,但是我碰到了一堵砖墙.我有3个ViewControllers,每个都嵌入在NavigationController中(可能是问题吗?我已经尝试将代码放在NavigationController类中.)我在AppDelegate的didFinishLaunchingWithOptions中尝试了以下两段代码. .swift文件,但都没有工作.

application.statusBarStyle = .LightContent

UIApplication.sharedApplication().statusBarStyle = .LightContent

Docs关于它的所有内容都是UIBarButtonStyle是一个Int并且给了我这个enum片段,这对我来说并没有任何帮助.

enum UIStatusBarStyle : Int {
    case Default
    case LightContent
    case BlackOpaque
}

我错过了什么?

8 个回答
  • Swift 3.0

    在AppDelegate.swift didFinishLaunchingWithOptions中

    UIApplication.shared.statusBarStyle = .lightContent
    

    的Info.plist

    View controller-based status bar appearance -> NO
    

    Swift 2.2

    在AppDelegate.swift didFinishLaunchingWithOptions中

    UIApplication.sharedApplication().statusBarStyle = .LightContent
    

    的Info.plist

    View controller-based status bar appearance -> NO
    

    2023-01-09 10:23 回答
  • 在Swift 3中,状态栏样式已更改为UIViewController中的计算属性,您可以像这样覆盖:

    override var preferredStatusBarStyle: UIStatusBarStyle {
       return .lightContent //or default
    } 
    

    2023-01-09 10:24 回答
  • 奇怪,使用Swift 3.1和XC8.2.1,但以上所有都不起作用.

    我做了什么,只是

    extension UINavigationController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
            get {
                return .lightContent
            }
        }
    }
    

    没有Plist,没有其​​他东西.HTH

    2023-01-09 10:24 回答
  • 对我来说,除非我添加:

    self.navigationController?.navigationBar.barStyle = .black;
    

    所以:

      设置UIViewControllerBasedStatusBarAppearanceYES.plist

      viewDidLoad电话中self.setNeedsStatusBarAppearanceUpdate();

      覆盖preferredStatusBarStyle
      override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

      在overrided方法我设置也是navigationBar.barStyle如此最终
      内容:
      override var preferredStatusBarStyle: UIStatusBarStyle { self.navigationController?.navigationBar.barStyle = .black;//or default return .lightContent //or default }
      和用于黑色内容使用默认

    来自这里和这里的来源.

    如果这不起作用,你可以尝试添加一个UINavigationController extension:

    extension UINavigationController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
            if let lastVC = self.viewControllers.last
            {
                return lastVC.preferredStatusBarStyle
            }
    
            return .default
        }
    }
    

    2023-01-09 10:24 回答
  • 你必须设置:

    navigationController.navigationBar.barStyle = .black

    并且文本将以白色显示

    2023-01-09 10:24 回答
  • 你有两个选择.

    如果要继续手动设置状态栏的样式,请继续执行您正在执行的操作,但是您需要将以下键添加到info.plist文件中,其值为NO.

    查看基于控制器的状态栏外观

    或者,如果要继续使用基于视图控制器的状态栏外观,而不是设置应用程序的statusBarStyle,请覆盖preferredStatusBarStyle要为其指定状态栏样式的每个视图控制器中的属性.

    斯威夫特3

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    斯威夫特2

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

    2023-01-09 10:24 回答
  • 在iOS 9上,不推荐使用以下(setStatusBarStyle),如果你这样做,你会收到警告.

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

    如果您希望一次性更改所有statusBars,请尝试将以下内容添加到Info.plist中.这也会使您的启动屏幕状态栏变白.虽然上面的代码不会.

    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    

    2023-01-09 10:24 回答
  • 对于iOS9.x和Xcode7,只需将其放入AppDelegate.swift:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
        UINavigationBar.appearance().barStyle = .Black
    
    } 
    

    这将自动将状态栏的样式转换.Lightcontent为UINavigationController中的所有视图控制器.

    (另外,View controller-based status bar appearance从Info.plist中删除以抑制您可能也会看到的警告!)

    2023-01-09 10:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有