即使将UIViewControllerBasedStatusBarAppearance设置为NO,状态栏也可以在iPad mini上看到

我有一个UIViewControllerBasedStatusBarAppearance设置为NO的iPhone应用程序。 不是在我testing过的任何设备上(iPhone 4,5,5s,5c,iPad 4ish)都可以看到状态栏。 除了iPad mini(第一代)之外。 使用iOS SDK是7.1。

状态栏在iPad mini 1st Gen上可见。 我期望状态栏也隐藏在这个设置上。

我甚至尝试添加[[UIApplication sharedApplication] setStatusBarHidden:NO]; didFinishLaunchingWithOptions但它没有改变任何东西。

状态栏样式也设置为“在应用程序启动过程中隐藏”。

iPad mini运行iOS 7.1。

是的,这是一个边缘案例,但我不能得到这个预期的结果。

还有一点信息:我使用的是cocos2d-iphone v2.1。 从来没有遇到过这个问题,因为我已经发布了一堆具有相同引擎的应用程序。 我开始认为这是一个与组合相关的bug:iOS 7.1和iPad mini。

这是设置:

Plist设置看起来像这样

这是iPad Mini iOS 7.1版中的一个错误。

他们以典型的方式解决了一个问题(一个空白的状态栏)并创build了另一个问题。

一定要把错误报告给苹果公司。

我面临同样的问题,我想提出一些解释。

只有当您在iPad上启动iPhone(仅)应用程序时才会出现此问题。 如果应用程序是通用的,则不会有任何问题。 最令人讨厌的行为是在没有Retina显示屏的iPad上使用仅iPhone应用程序。 因为状态栏覆盖了应用程序的顶部。


我的plist文件:

在这里输入图像说明


iPhone只有应用程序

苹果手机

在这里输入图像说明

iPad的:

在这里输入图像说明

iPad视网膜:

在这里输入图像说明


普遍应用

苹果手机:

在这里输入图像说明

iPad的:

在这里输入图像说明

iPad视网膜:

在这里输入图像说明

除了Giebler的回答,因为我没有足够的评价声誉,这个错误似乎也适用于运行iOS 7.x的非Retina设备,其中包括iPad 2。

你应该设置“基于视图控制器的状态栏外观”是,并且在每个你想隐藏的视图中调用这个方法。 更好地为您的视图创build一个基本视图控制器,并调用一次。

 - (BOOL)prefersStatusBarHidden { return YES; } 
 <key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> 

尝试将其设置到您的info.plist文件中。

我有一个解决方法。 添加以下内容:

 - (UIStatusBarStyle) preferredStatusBarStyle { return -1; } 

无论你在哪里:

 - (BOOL)prefersStatusBarHidden { return YES; } 

这显然是可怕的,但似乎对我来说至less是如此 – 至less目前为止。

我注意到这导致输出如下所示:

 <Error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update. 

我发现另一个解决方法,可能是这个错误是什么使这个解决方法工作,所以我坚持下去,但值得注意的。