我有一个iPhone应用,UIViewControllerBasedStatusBarAppearance设置为NO。我测试过的任何设备(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。从来没有遇到过这个问题,因为我发布了一堆具有相同引擎的应用程序。 我开始认为这是与组合相关的错误:iOS 7.1和iPad mini。
这是设置:
答案 0 :(得分:13)
我遇到了同样的问题,我想提出一些解释。
只有在iPad上启动iPhone(仅限)应用程序时才会出现此问题。如果应用程序是通用的,则不会有任何问题。 最令人讨厌的行为发生在没有Retina显示屏的iPad上使用iPhone专用应用程序。因为状态栏会覆盖应用程序的顶部。
我的plist文件:
仅限iPhone的应用程序
<强> iPhone 强>
<强> ipad公司:强>
iPad Retina:
通用应用
<强> iPhone:强>
<强> ipad公司:强>
iPad Retina:
答案 1 :(得分:7)
这是iPad Mini iOS 7.1版中的一个错误。
以典型的方式,他们修复了一个问题(空白状态栏)并创建了另一个问题。
请务必向Apple报告错误。
答案 2 :(得分:2)
除了Giebler的回答之外,由于我没有足够的声誉来评论,这个错误似乎也适用于运行iOS 7.x的非Retina设备,其中包括iPad 2.
答案 3 :(得分:0)
您应该设置“查看基于控制器的状态栏外观”YES,并在要隐藏的每个视图中调用此方法。最好为您的视图创建一个基本视图控制器并调用一次。
- (BOOL)prefersStatusBarHidden {
return YES;
}
答案 4 :(得分:0)
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
尝试将此设置到您的info.plist文件中。
答案 5 :(得分:0)
我有一个解决方法。添加以下内容:
- (UIStatusBarStyle) preferredStatusBarStyle {
return -1;
}
无论你在哪里:
- (BOOL)prefersStatusBarHidden {
return YES;
}
这显然很糟糕,但它似乎对我有用 - 至少到目前为止。
我注意到这导致输出如下:
<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.
我找到了另一种解决方法,而且这个错误可能会使这个解决方法起作用,所以我坚持使用它,但值得注意。