在 iOS8应用程序中隐藏状态栏

我试过了

[[UIApplication sharedApplication] setStatusBarHidden:YES];

这没用。

我已经在我的 Info.plist文件中寻找“查看控制器为基础的状态栏外观”,但它不存在。

我如何隐藏在屏幕顶部的白色状态栏(与时钟和电池充电)在我的应用程序的 Xcode 6?谢谢!

79918 次浏览

您需要在每个视图控制器上重写此方法,除非您具有 plist 条目。

目标 C

-(BOOL)prefersStatusBarHidden{
return YES;
}

Swift 2

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

Swift 3 +

override var prefersStatusBarHidden: Bool {
return true
}

并且不要忘记设置(如果您通过调用 PresViewController: 动画: 完成:方法来显示视图控制器) :

目标 C

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;

斯威夫特

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true

文件: https://developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb

如果从某个容器视图控制器更改状态栏(例如,。UINavigationControllerUIViewController子视图控制器) ,并且要更改负责状态栏的视图控制器,则应使用 childViewControllerForStatusBarHidden:属性。例如:

设置第一视图控制器实例始终负责状态栏管理

目标 C

- (UIViewController *)childViewControllerForStatusBarHidden {
return childViewControllers.first; // or viewControllers.first
}

Swift 2

override var childViewControllerForStatusBarHidden() -> UIViewController? {
return childViewControllers.first // or viewControllers.first
}

Swift 3 +

override var childViewControllerForStatusBarHidden: UIViewController? {
return childViewControllers.first // or viewControllers.first
}

设置负责状态栏管理的容器视图控制器

目标 C

- (UIViewController *)childViewControllerForStatusBarHidden {
return nil;
}

Swift 2

override func childViewControllerForStatusBarHidden() -> UIViewController? {
return nil
}

Swift 3 +

override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}

文件: Https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh

如果不存在该行,可以将其添加到 Info.plist 文件中。只要进入 Xcode 的项目,进入“信息”部分,然后悬停在其中一行上。应该出现一个“ +”按钮,允许您添加一行并输入“查看基于控制器的状态栏外观”。

  1. 转到 Info.plist 文件
  2. 将鼠标悬停在其中一条线上,就会出现一个(+)和(-)按钮。
  3. 单击加号按钮添加新键
  4. 键入 以大写 V 开头,第一个选项将自动为 基于视图控制器的状态栏外观
  5. 将值设置为“ NO”
  6. 转到您的目标 C (快速语言: AppGenerate.swift)的 AppGenerate.m
  7. 在方法内部添加代码

目标 C:

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


return YES;
}

斯威夫特:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool {
application.statusBarHidden = true


return true
}

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

如果你使用 UIDocumentInteractionController 来显示数据,那么你永远不会隐藏状态栏,所以我有这个替代品

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

此行将状态栏内容的颜色更改为白色

您可以隐藏状态栏,而不需要编写一行代码,它只需要在 info.plist 中输入两个条目,第一个条目是

“查看基于控制器的状态栏外观”设置为 NO

第二个是

“状态栏初始隐藏”设置为 YES

对于带有 Swift 3的 iOS 10,你应该使用:

override var prefersStatusBarHidden: Bool {
get {
return true
}
}
  1. 打开信息列表
  2. “查看基于控制器的状态栏外观”设置为 NO
  3. “状态栏初始隐藏”设置为 YES
  4. 成交

不需要写一行代码... 干杯