在ios 9中隐藏状态栏

你如何隐藏ios 9中的状态栏?

现在已经弃用了:

[UIApplication sharedApplication] setStatusBarHidden:YES]; 

斯威夫特-3

  override var prefersStatusBarHidden: Bool { return true } 

我从这里得到了信息

  • func更改为var

  • 删除()

  • 更改->:

这是可行的,因为一个计算variables有一个getter函数,所以你之前实现的函数只是变成了getter函数


2016年起:简单的事情

在你的info.plist中添加以下两个属性statusBar Hidden

查看基于控制器的状态栏外观(布尔值:NO)

状态栏最初是隐藏的(布尔:是)

按来源

 <key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> 

要么

在这里输入图像说明


老答案! …

  1. didFinishLaunchingWithOptions添加application.statusBarHidden

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. application.statusBarHidden = YES; return YES; } 

并添加

  1. info.plist添加这个View controller-based status bar appearance设置NO

     View controller-based status bar appearance = NO 

基于viewcontroller的隐藏集

在视图控制器中添加方法。

目标-C

 - (BOOL)prefersStatusBarHidden { return YES; } 

快到2

 override func prefersStatusBarHidden() -> Bool { return true } 

(GOOD)2016.5.17在iOS 9.0中效果不错。

更新的答案

  1. 转到Info.plist文件
  2. 将鼠标hover在其中一行上,将显示(+)和( – )button。
  3. 点击加号button添加新的密钥
  4. input大写字母V开始,自动第一个选项将是基于视图控制器的状态栏外观 。 将其作为KEY添加。
  5. 将VALUE值设为“NO”
  6. 转到你的AppDelegate.m Objective-C( 用于swift语言:AppDelegate.swift
  7. 在方法中添加代码

对于Objective-C:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [application setStatusBarHidden:YES]; return YES; } 

对于Swift:

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

在info.plist中添加以下两个属性。

 View controller-based status bar appearance (NO) Status bar is initially hidden (YES) 

我知道setStatusBarHidden:的文档setStatusBarHidden:没有提到什么使用。 但UIApplication的标题呢。

 // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system. @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]"); - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]"); 

这里声明,你应该使用UIViewController上的prefersStatusBarHidden并使用基于视图控制器的状态栏样式。

你现在需要做的是configuration视图控制器是否需要显示隐藏状态栏。 像这样:

 - (BOOL)prefersStatusBarHidden { return YES; } 

以下是如何轻松返回对iOS 9 +Swift 3+的状态栏可见性的控制:

  1. Info.plist添加带有YESView controller-based status bar appearance关键字。
  2. 将这个variables添加到视图控制器:

     private var isStatusBarHidden = false { didSet { setNeedsStatusBarAppearanceUpdate() } } 
  3. 覆盖prefersStatusBarHidden属性:

     override var prefersStatusBarHidden: Bool { return isStatusBarHidden } 

而已。 现在您可以随时调用isStatusBarHidden = trueisStatusBarHidden = false

如果由于某种原因,您需要View controller-based status bar appearance等于YES (例如保持状态栏为白色)

在AppDelegate的didFinishLaunchingWithOptions方法或设置您的navigationController的任何地方:

 yourNavigationController.navigationBar.barStyle = .black 

然后使用alex-staravoitau真棒的答案,并添加这个代码,无论你将隐藏状态栏:

 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

我不知道这是否是正确的方法来实现这个结果,但它对我有用,我希望它也可以帮助别人:)

在大多数iOS中,它将工作。 我已经testing了iOS 10。

  1. 打开info.plist
  2. “查看基于控制器的状态栏外观”设置为NO
  3. “状态栏最初隐藏”设置为YES
  4. 完成