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

Agg*_*sor 73 objective-c statusbar ios8

我试过了

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
Run Code Online (Sandbox Code Playgroud)

这什么都不做.

我在我的Info.plist文件中查看了"查看基于控制器的状态栏外观",但它不在那里.

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

Vap*_*olf 171

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

Objective-C的

-(BOOL)prefersStatusBarHidden{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

override func prefersStatusBarHidden() -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

Swift 3+

override var prefersStatusBarHidden: Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

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

Objective-C的

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;
Run Code Online (Sandbox Code Playgroud)

迅速

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true
Run Code Online (Sandbox Code Playgroud)

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

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

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

Objective-C的

- (UIViewController *)childViewControllerForStatusBarHidden {
    return childViewControllers.first; // or viewControllers.first
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

override var childViewControllerForStatusBarHidden() -> UIViewController? {
    return childViewControllers.first // or viewControllers.first
}
Run Code Online (Sandbox Code Playgroud)

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? {
    return childViewControllers.first // or viewControllers.first
}
Run Code Online (Sandbox Code Playgroud)

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

Objective-C的

- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

override func childViewControllerForStatusBarHidden() -> UIViewController? {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

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


nyc*_*nie 120

  1. 转到Info.plist文件
  2. 将鼠标悬停在其中一条线上,将显示一个(+)和( - )按钮.
  3. 单击加号按钮添加新密钥
  4. 键入以大写字母V开头并自动选择基于视图控制器的状态栏外观.将其添加为KEY.
  5. 将VALUE设置为"NO"
  6. 转到AppDelegate.m for Objective-C(对于swift语言:AppDelegate.swift)
  7. 在方法内添加代码

对于Objective-C:

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

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

对于Swift:

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

    return true
}
Run Code Online (Sandbox Code Playgroud)

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

  • 只有前5个步骤就足够了,如果你又向info.plist添加了一个键,添加这个键="状态栏最初是隐藏的",其值为"是" (7认同)
  • 谢谢,这是我第一次发现有人解释得很好而且实际上是有道理的 (2认同)
  • @KarlHumphries,不客气.:) (2认同)

小智 27

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

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

第二是

"状态栏最初隐藏"设置为YES


Ner*_*ken 11

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


Ram*_*los 9

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

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)