我想删除屏幕顶部的状态栏.
这不起作用:
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!运行你的应用程序,没有更多的状态栏!
转到Info.plist文件
将鼠标悬停在其中一条线上,将显示一个(+)和( - )按钮.
单击加号按钮添加新密钥以大写字母V开头,自动第一个选择将是基于视图控制器的状态栏外观.
将其添加为KEY.
将VALUE设置为"NO"
转到AppDelegate.swift
在方法内添加代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool { application.statusBarHidden = true return true }
DONE!运行你的应用程序,没有更多的状态栏!
如果你想在按钮上隐藏和恢复状态栏,在显示和解除滑入菜单,弹出窗口等时,你可以使用这种方法: -
要隐藏状态栏: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
要恢复状态栏: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal
斯威夫特3
在Info.plist
设置View controller-based status bar appearance
为NO
并致电 UIApplication.shared.isStatusBarHidden = true
你真的应该在你的视图控制器上实现prefersStatusBarHidden:
迅捷2
override var prefersStatusBarHidden: Bool { return true }
迅捷3及以后
override var prefersStatusBarHidden: Bool { return true }
如果您更喜欢视觉方法而不是编码,请使用此方法:在您的 info.plist
只需添加View controller-based status bar appearance
到NO
而Status bar is initially hidden
作为YES
override func viewWillAppear(animated: Bool) { super.viewWillAppear(true); navigationController?.navigationBar.hidden = true // for navigation bar hide UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide }
iOS 10/Swift 3.0的更新
不再是一个功能,现在是一个属性......
override var prefersStatusBarHidden: Bool { return true }
我实际上是自己想出来的.我将添加我的解决方案作为另一种选择.
extension UIViewController { func prefersStatusBarHidden() -> Bool { return true } }
转到Info.plist并添加两个密钥:
在Swift 3.x中:
override func viewWillAppear(_ animated: Bool) { UIApplication.shared.isStatusBarHidden = true }
所以这里的问题实际上与Swift无关,而是从iOS 7开始处理状态栏的外观.
默认情况下,视图控制器在屏幕上单独控制状态栏的外观.如果要使用此方法来控制状态栏,则可以为要修改外观的任何视图控制器覆盖以下方法:
prefersStatusBarHidden
,
preferredStatusBarStyle
,
preferredStatusBarAnimation
,
在您的情况下,您只需实现prefersStatusBarHidden
并返回true
.
另一种方法是在应用程序级别控制状态栏外观.这似乎是你真正想做的事情(通过设置application.statusBarHidden
).
为了使这项工作,你需要打开你的应用程序的Info.plist
文件并添加密钥UIViewControllerBasedStatusBarAppearance
,并给它一个值NO
.