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

不工作:

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

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录苹果开发者论坛


当前回答

在Plist中添加以下属性。

->状态栏初始隐藏= YES

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

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

其他回答

在Plist中添加以下属性。

->状态栏初始隐藏= YES

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

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

我不知道为什么你“不能登录苹果开发者论坛”,但(在不违反NDA的情况下)你也可以通过Xcode隐藏你的状态栏。这是应用程序目标的一般设置。

在你的app plist文件中添加一行“View controller based status bar appearance”,并将其设置为NO

注意,如果你在应用中使用UIImagePickerController,这是行不通的。

来自http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/, mgiroux的解决方案

在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及以上的应用程序

对于这个问题,有很多建议的组合,但问题是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设置如何,这都应该有效。