如何在Swift iOS应用程序中隐藏状态栏?

 潇洒嘉新 发布于 2023-01-09 10:10

我想删除屏幕顶部的状态栏.

这不起作用:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
        application.statusBarHidden = true
        return true
}

我也尝试过:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    application.statusBarHidden = true
    controller.setNeedsStatusBarAppearanceUpdate()

    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "Hello World"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

drewag.. 431

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

迅捷2

override var prefersStatusBarHidden: Bool {
    return true
}

迅捷3及以后

override var prefersStatusBarHidden: Bool {
    return true
}

我认为杰伊的目的是隐藏完整应用的状态栏.这就是为什么他会在应用程序的didFinishLaunchingWithOptions中编写隐藏功能.如何隐藏完整应用程序的状态栏? (4认同)

@DanBeaulieu我认为通过继承将是一个很好的解决方案.创建一个UIViewController子类,其中bar hidden设置为true,然后使所有子块继承自该子类.另一种方法可能是使用[Swizzling](http://nshipster.com/swift-objc-runtime/) (3认同)


nycdanie.. 97

    转到Info.plist文件

    将鼠标悬停在其中一条线上,将显示一个(+)和( - )按钮.

    单击加号按钮添加新密钥以大写字母V开头,自动第一个选择将是基于视图控制器的状态栏外观.

    将其添加为KEY.

    将VALUE设置为"NO"

    转到AppDelegate.swift

    在方法内添加代码

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
        application.statusBarHidden = true
        return true
    }
    

DONE!运行你的应用程序,没有更多的状态栏!

11 个回答
    1. 转到Info.plist文件

      将鼠标悬停在其中一条线上,将显示一个(+)和( - )按钮.

      单击加号按钮添加新密钥以大写字母V开头,自动第一个选择将是基于视图控制器的状态栏外观.

      将其添加为KEY.

      将VALUE设置为"NO"

      转到AppDelegate.swift

      在方法内添加代码

      func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
          application.statusBarHidden = true
          return true
      }
      

    DONE!运行你的应用程序,没有更多的状态栏!

    2023-01-09 10:10 回答
  • 如果你想在按钮上隐藏和恢复状态栏,在显示和解除滑入菜单,弹出窗口等时,你可以使用这种方法: -

    要隐藏状态栏: -

    UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
    

    要恢复状态栏: -

    UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal 
    

    2023-01-09 10:10 回答
  • 斯威夫特3

    Info.plist设置View controller-based status bar appearanceNO

    并致电 UIApplication.shared.isStatusBarHidden = true

    2023-01-09 10:10 回答
  • 你真的应该在你的视图控制器上实现prefersStatusBarHidden:

    迅捷2

    override var prefersStatusBarHidden: Bool {
        return true
    }
    

    迅捷3及以后

    override var prefersStatusBarHidden: Bool {
        return true
    }
    

    2023-01-09 10:10 回答
  • 如果您更喜欢视觉方法而不是编码,请使用此方法:在您的 info.plist

    在此输入图像描述 只需添加View controller-based status bar appearanceNO

    Status bar is initially hidden作为YES

    2023-01-09 10:10 回答
  •  override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(true);
        navigationController?.navigationBar.hidden = true // for navigation bar hide
        UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
    }
    

    2023-01-09 10:11 回答
  • iOS 10/Swift 3.0的更新

    不再是一个功能,现在是一个属性......

    override var prefersStatusBarHidden: Bool {
        return true
    }
    

    2023-01-09 10:11 回答
  • 我实际上是自己想出来的.我将添加我的解决方案作为另一种选择.

    extension UIViewController {
        func prefersStatusBarHidden() -> Bool {
            return true
        }
    }
    

    2023-01-09 10:12 回答
  • 转到Info.plist并添加两个密钥:

    转到Info.plist并添加两个密钥:

    2023-01-09 10:13 回答
  • 在Swift 3.x中:

    override func viewWillAppear(_ animated: Bool) {
        UIApplication.shared.isStatusBarHidden = true
    }
    

    2023-01-09 10:13 回答
  • 所以这里的问题实际上与Swift无关,而是从iOS 7开始处理状态栏的外观.

    默认情况下,视图控制器在屏幕上单独控制状态栏的外观.如果要使用此方法来控制状态栏,则可以为要修改外观的任何视图控制器覆盖以下方法:

    prefersStatusBarHidden, preferredStatusBarStyle, preferredStatusBarAnimation,

    在您的情况下,您只需实现prefersStatusBarHidden并返回true.

    另一种方法是在应用程序级别控制状态栏外观.这似乎是你真正想做的事情(通过设置application.statusBarHidden).

    为了使这项工作,你需要打开你的应用程序的Info.plist文件并添加密钥UIViewControllerBasedStatusBarAppearance,并给它一个值NO.

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