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

不工作:

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

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录苹果开发者论坛


当前回答

只需在info中添加这两行。plist文件。它将修复iOS7和旧版本。

状态栏初始隐藏= YES 基于控制器的视图状态栏外观= NO

导航到项目并选择目标->通用,并看到“状态栏样式…“在应用程序启动时隐藏”复选框将被选中。这是可行的。

其他回答

在Plist中添加以下属性。

->状态栏初始隐藏= YES

->视图控制器状态栏外观= NO

添加两者-现在状态栏将消失。

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

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

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

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

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

对于这个问题,有很多建议的组合,但问题是iOS 6和7使用不同的方法来隐藏状态栏。我从来没有成功地在iOS 7上设置plist设置来启用ios6风格的行为,但如果你正在构建支持iOS6 +的应用程序,你需要一次使用3个方法来确保特定的视图控制器隐藏状态栏:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

无论你的plist设置如何,这都应该有效。

这个线程上的许多答案都是有效的,但我的理解是,如果你试图做任何动态的事情,你最终需要调用:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];