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

不工作:

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

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录苹果开发者论坛


当前回答

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

其他回答

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

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

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

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

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

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

隐藏特定viewController的状态栏

- (BOOL)prefersStatusBarHidden {
    return YES;
}

设置状态栏为应用程序隐藏:

在.plist中设置基于控制器的状态栏的外观 和在应用程序:didFinishLaunchingWithOptions: set: (应用程序setStatusBarHidden:是的); 注意:setStatusBarHidden:已弃用

OR

在“项目设置”中->“常规”页签->“部署信息” 检查隐藏状态栏框。

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