Xcode 6.x/iOS 8 在横屏模式下隐藏状态栏

12

在使用Xcode 6.x构建的应用程序中,iPhone横屏模式下状态栏会自动隐藏。而在使用Xcode 5.x编译的相同应用程序则不会这样做。

我该如何防止应用程序在横屏模式下隐藏状态栏?基本上,我该如何禁用苹果/Xcode强制推行的这个“超级棒”的功能呢?

p.s. 我已经尝试使用以下代码更新视图控制器,但没有帮助。

- (BOOL)prefersStatusBarHidden {
    return NO;
}
3个回答

17

最佳解决方案

这基本上是一个两步流程:

1)。在您的项目Info.plist文件中将“View controller-based status bar appearance”设置为 NO

2)。在 application: didFinishLaunchingWithOptions: 方法中使用以下代码强制隐藏状态栏:NO

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

完成了,大功告成!

注意:重要的是使用上述两个setStatusBarHidden:withAnimation:声明,强制隐藏状态栏。


参考资料:在iOS8上,将我的应用程序显示为横向模式将隐藏状态栏,但在iOS 7上,状态栏会在两个方向上显示


1
我正在使用
#define IS_IOS8 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

    if (IS_IOS8){
            [[UIApplication sharedApplication] setStatusBarHidden:NO];
    }
}

3
“-willAnimateRotationToInterfaceOrientation”已经被弃用。 - orkenstein

0

Info.plist 中将 "View controller-based status bar appearance" 设置为 YES

然后将以下代码放置在所需的视图控制器中:

- (BOOL)prefersStatusBarHidden {
    return NO;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接