objective c - 在iOS 8应用中隐藏状态栏




objective-c ios8 (5)

我努力了

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

这什么也没做。

而且我已经在 Info.plist 文件中查找了“基于视图控制器的状态栏外观”,但它不存在。

如何在Xcode 6的应用内隐藏屏幕顶部的白色状态栏(带有时钟和电池电量)? 谢谢!


  1. 打开info.plist
  2. 将“基于视图控制器的状态栏外观”设置为“否”
  3. “状态栏最初被隐藏”设置为“是”
  4. 完成

无需写一行代码...干杯


  1. 转到Info.plist文件
  2. 将鼠标悬停在这些行之一上,将显示(+)和(-)按钮。
  3. 单击加号按钮添加新密钥
  4. 键入 以大写字母V开头, 并且自动的第一个选择是 基于View controller的状态栏外观 。 将其添加为密钥。
  5. 将值设置为“否”
  6. 转到您的适用于Objective-C的AppDelegate.m( 用于快速语言:AppDelegate.swift
  7. 在方法内部添加代码

对于Objective-C:

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

    return YES;
}

对于Swift:

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

    return true
}

做完了! 运行您的应用程序,不再有状态栏!


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

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}

您可以将该行添加到Info.plist文件中(如果没有)。 只需转到Xcode中的项目,转到“信息”部分,然后将鼠标悬停在现有行之一上即可。 应该出现一个“ +”按钮,允许您添加一行并输入“基于View Controller的状态栏外观”。


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

目标C

-(BOOL)prefersStatusBarHidden{
    return YES;
}

迅捷2

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

迅捷3+

override var prefersStatusBarHidden: Bool {
    return true
}

并且不要忘记进行设置(如果您通过调用 presentViewController:animated:completion: 方法来呈现视图控制器):

目标C

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;

迅速

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true

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

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

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

目标C

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

迅捷2

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

迅捷3+

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

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

目标C

- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}

迅捷2

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

迅捷3+

override var childViewControllerForStatusBarHidden: UIViewController? {
    return nil
}

说明文件: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh : https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh





statusbar