即使将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。
这是设置:
这是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.
我发现另一个解决方法,可能是这个错误是什么使这个解决方法工作,所以我坚持下去,但值得注意的。