我刚刚把我的iPhone 5 iOS 7升级到四个测试版。现在,当我从Xcode 5在iPhone上运行我的应用程序时,状态栏没有隐藏,尽管它应该隐藏。

不工作:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录苹果开发者论坛


当前回答

Swift 2.0+ IOS 9

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

其他回答

为了使用遗留的UIApplication方法来隐藏/显示状态栏,你的应用程序必须为iOS 7设置一个plist值:

基于视图-控制器的状态栏外观= NO

默认设置为YES。如果将其更改为NO,则可以使用遗留方法。如果你让它设置为YES,你仍然可以隐藏状态栏,但这取决于应用程序中的每个视图控制器子类来重写:prefersStatusBarHidden以返回YES。

任何时候你的应用程序需要状态栏外观或可见性的改变,并且基于视图控制器的状态栏外观被设置为YES,你最外层的视图控制器需要调用:

setNeedsStatusBarAppearanceUpdateAnimation

我尝试了所有这些选项张贴在我的项目,他们不会工作。我认为这可能是因为我更新了Xcode,然后应用程序到iOS 7,一些设置在某个地方搞砸了。我决定为它建立一个全新的项目,在简单的设置后:“状态栏最初隐藏= YES”和“基于视图控制器的状态栏外观= NO”,正如许多其他人所说,它工作正确(即没有状态栏)。

所以我的建议是,如果你正在开发一个从旧版本升级到iOS 7的项目,并尝试了所有其他选项,那就创建一个新项目。

2019年……

要制作一个没有状态栏的应用程序,

单击信息。plist,右键单击“添加行”。

添加这两个,设置如下:

这就是它的全部。

在视图控制器中添加方法。

- (BOOL)prefersStatusBarHidden {
    return YES;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.statusBarHidden = YES;
return YES;
}