在启动画面期间隐藏状态栏

30
我试图在启动画面期间隐藏状态栏。当我将“Status bar is initially hidden”添加到plist并将值设置为YES时,这个方法很有效。但是,这会从整个应用程序中删除状态栏,即使我已经将“View controller-based status bar appearance”添加到plist并将值设置为NO,并在appdelegate中添加了以下内容:

我尝试在启动画面期间隐藏状态栏,当我将“Status bar is initially hidden”添加到plist并将其值设置为YES时,可以正常工作。然而,这会导致整个应用程序中的状态栏被移除,尽管我已经将“View controller-based status bar appearance”添加到plist并将其值设置为NO,并且在appdelegate中添加了以下内容:

 UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 

如何在不影响应用程序其余部分的情况下,最初移除状态栏?

7个回答

63

这是为 Xcode 8.3.3 的 Swift 3 更新的。

在您的 Info.plist 文件中添加以下键:

info.plist

然后在您的 AppDelegate 文件中,在 didFinishLaunchingWithOptions 部分添加以下内容:

func application(_application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
      UIApplication.shared.isStatusBarHidden = false
      return true 
}

这应该解决你的问题。

如果这对你是个问题,你也可以在项目构建设置中配置启动颜色:

buildOptions


3
对于ObjectiveC和Xcode 10,您可以使用UIApplication.sharedApplication.statusBarHidden = NO;重新启用状态栏。 - Andreas Kraft
Setter for 'isStatusBarHidden' was deprecated in iOS 9.0: Use -[UIViewController prefersStatusBarHidden] - Radek Wilczak
1
似乎 UIApplication.shared.isStatusBarHidden = false 不是必要的,启动画面后状态栏仍然会显示出来。 - Jeroen

28
在Swift 4中,在Info.plist中添加:

状态栏最初是否隐藏


1
完美地为我工作 - Tony Merritt

12

在您的项目设置 -> General -> Deployment Info 中,勾选“隐藏状态栏”字段。

输入图像描述

接下来,在您的视图控制器中覆盖- prefersStatusBarHidden方法,就像这样:

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

这个解决方案看起来最接近。 我只需要勾选上面提到的“隐藏状态栏”,然后就不需要下面这段代码了:override func prefersStatusBarHidden() -> Bool { return false } - GKK
请使用以下代码来解决错误: override var prefersStatusBarHidden : Bool { return false } - Tà Truhoada

9

只需将以下突出显示的行添加到您的Info.plist文件中,即可在Swift 4中正常工作:

enter image description here


3

在Swift 3中

首先按照以下方式从项目-目标中隐藏状态栏:

enter image description here

然后在didFinishLaunchingWithOptions中取消隐藏状态栏。

func application(_application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
      UIApplication.shared.isStatusBarHidden = false
      return true 
}

0
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation)

他们真的希望你使用基于UIViewController的状态栏。 - David Yang Liu

0

要在iPad上隐藏,也需要在Info.plist中设置UIStatusBarHidden~ipad键为YES


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接