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

不工作:

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

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录苹果开发者论坛


当前回答

要在单个视图中隐藏状态栏,您应该使用:

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

起初,这对我来说并不管用,然后在这个方法的文档中看到: 如果你的应用程序使用默认的基于uiviewcontroller的状态栏系统,设置statusBarHidden没有任何作用。

这必须在plist文件上完成,将基于视图控制器的状态栏外观设置为NO。 然后就成功了。

其他回答

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

尝试添加以下方法到你的应用程序的根视图控制器:

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

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

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

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

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

setNeedsStatusBarAppearanceUpdateAnimation

在plist中添加---- 基于视图控制器的状态栏外观 在每个viewController中写入 - (void) viewDidLayoutSubviews { CGRect viewBounds = self.view.bounds; CGFloat topBarOffset = 20.0; viewBounds.origin.y = -topBarOffset; self.view.bounds = viewBounds; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent] }

对于iOS 7中的状态栏问题,但目标应该是5.1及以上的应用程序

你可以检查这段代码,pod UIViewController+ODStatusBar