隐藏状态栏在iOS 8应用程序中

时间:2014-10-01 16:25:41

标签: objective-c ios8 statusbar

我试过了

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

这没有任何作用。

我查看了我的Info.plist文件中的“查看基于控制器的状态栏外观”,但它不存在。

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

7 个答案:

答案 0 :(得分:171)

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

<强>目标C

-(BOOL)prefersStatusBarHidden{
    return YES;
}

Swift 2

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

Swift 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

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

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

<强>目标C

childViewControllerForStatusBarHidden:

Swift 2

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

Swift 3 +

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

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

<强>目标C

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

Swift 2

- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}

Swift 3 +

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

文档: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh

答案 1 :(得分:119)

  1. 转到Info.plist文件
  2. 将鼠标悬停在其中一条线上,然后会显示一个(+)和( - )按钮。
  3. 点击加号按钮添加新密钥
  4. 键入以大写字母V 开头,第一个选择将是查看基于控制器的状态栏外观。将其添加为KEY。
  5. 将VALUE设为“NO”
  6. 转到AppDelegate.m获取Objective-C(用于swift语言:AppDelegate.swift
  7. 在方法
  8. 中添加代码

    对于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
    }
    

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

答案 2 :(得分:27)

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

&#34;查看基于控制器的状态栏外观&#34;设为NO

第二个是

&#34;状态栏最初是隐藏的&#34;设为是

答案 3 :(得分:11)

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

答案 4 :(得分:9)

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

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

答案 5 :(得分:2)

  1. 打开info.plist
  2. &#34;查看基于控制器的状态栏外观&#34;设为否
  3. &#34;状态栏最初是隐藏的&#34;设为是
  4. 完成
  5. 无需编写一行代码......干杯

答案 6 :(得分:-4)

如果您使用UIDocumentInteractionController显示数据,那么您永远不会隐藏状态栏,所以我有其他的

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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

相关问题