在iOS 7.0中,我通过添加
隐藏了我的应用中的状态栏<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
到info.plist。我刚刚将测试iPad更新到iOS 7.1,状态栏现在又回到了我的所有应用程序中。如何在7.0和7.1中隐藏它?
更新:这只发生在iPad上运行的iPhone应用程序中,我没有在iPhone或模拟器中看到这个问题。
答案 0 :(得分:1)
在要隐藏状态栏的视图控制器中,添加以下方法
- (BOOL)preferStatusBarHidden {
return YES;
}
然后你可以打电话
[self setNeedsStatusBarAppearanceUpdate];
将触发对状态栏的更改。此调用可以在动画块内完成,动画块将为更改设置动画。
答案 1 :(得分:1)
尝试添加以下内容
- (void)viewWillAppear:(BOOL)animated{
NSLog(@"View will appear");
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
答案 2 :(得分:1)
我可以在模拟器中以iPhone兼容模式运行的单视图iPhone专用应用程序重现此问题。但只有在iOS 7.1上选择iPad非视网膜时。
我的发现:
我在.plist中尝试了这些键:
<key>UIStatusBarHidden</key>
<true/>
<key>UIStatusBarHidden~ipad</key>
<true/>
和
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIViewControllerBasedStatusBarAppearance~ipad</key>
<false/>
我也试过@Irfan提到的基于ViewController的解决方案,但没有用。
似乎无法检测状态栏是否显示为[UIApplication sharedApplication] .statusBarFrame返回{0,0,0,0}
答案 3 :(得分:0)
将此添加到ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
并实施以下方法:
- (BOOL)prefersStatusBarHidden {
return YES;
}
它将隐藏您实现它的特定ViewController的状态栏。 它对我来说非常好。 希望它也会帮助你。
答案 4 :(得分: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.
我找到了另一种解决方法,而且这个错误可能会使这个解决方法起作用,所以我坚持使用它,但值得注意。