隐藏在iPad上运行的iPhone应用程序的状态栏

时间:2014-01-10 02:17:06

标签: ios iphone ipad statusbar uistatusbar

我的iPhone应用程序要求始终隐藏状态栏。这通常很容易做到,如果我只在iPhone上运行应用程序,它就有效。但是,如果我在iPad上运行该应用程序,状态栏仍会显示在内容的顶部。那么,无论我的iPhone专用应用程序运行在哪个设备上,如何确保隐藏状态栏?我目前正在我的代码中执行以下操作:

为每个视图控制器调用此方法(我实际上在UIViewController上创建了一个类别,可以自动为任何VC实现此类,但它与在每个vc文件中编写它基本相同):

-(BOOL)prefersStatusBarHidden{
    return YES;
}

我还在Info.plist中将“状态栏最初隐藏”设置为YES并将“查看基于控制器的状态栏外观”设置为NO。我也试过检测正在使用哪个设备并调用

[UIApplication sharedApplication]setSetStatusBarHidden:YES]
在AppDelegate中

,但也没有运气。所以,我相信我已经尝试过所有想要尝试的东西。

3 个答案:

答案 0 :(得分:10)

这似乎是在 iOS 7.1 中引入的,并影响运行带有视网膜图形的iPhone应用程序的非视网膜iPad。

开发人员没有解决方案。我认为Apple必须修补这个......

问题设备: iPad 2 iPad Mini(非视网膜)。

iOS 7.0中不存在问题,并且可以在发布其他解决方案的情况下修复状态栏问题。

2014年9月更新 - iOS 8:

此错误已修复iOS 8 !!!!!

答案 1 :(得分:0)

添加此代码。

- (BOOL)prefersStatusBarHidden{
return YES;}

答案 2 :(得分:-1)

YourViewController中添加一个属性

@property BOOL statusBarHidden;

然后在ViewDidLoad添加以下代码行

    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    self.statusBarHidden = YES;

然后在YourViewController

中添加方法
- (BOOL)prefersStatusBarHidden{
return YES;}

并且也不要忘记在代码中添加#import <UIKit/UIKit.h>,它对IOS6.1&amp; 7.0:)