在iPhone上启用/禁用每个视图的statusBar(20像素问题)

时间:2012-02-14 09:49:06

标签: iphone ios statusbar

我只想启用/禁用每个视图控制器的状态栏(某些视图全屏,有些不是)

我已经多次通过与状态栏20像素问题相关的所有帖子,但仍有问题,特别是在iOS5.0上(一些技巧)适用于较旧的iOS版本):

以下是问题定义:

  • 我使用[[UIApplication sharedApplication] setStatusBarHidden:YES]隐藏状态栏

  • 如果我这样做,我总是有20像素高度的白色空白区域

  • 我尝试启用/停用 导航栏来强制布局,这在iOS 5上无效:

    [self.navigationController setNavigationBarHidden:NO animated:NO];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    
  • 我尝试手动重置视图框大小,无需更改

    self.view.frame=CGRectMake(0, 0, 320, 480);

  • 我尝试手动更改导航容器视图:

    self.navigationController.frame=CGRectMake(0, 0, 320, 480);

  • 所有视图当然都是480像素高度

2 个答案:

答案 0 :(得分:4)

在要向其显示StatusBar的视图控制器的viewWillAppear中使用以下方法。

[[UIApplication sharedApplication]setStatusBarHidden:YES];

声明一个BOOL变量,指示在视图控制器中加载视图时是否隐藏状态栏,您希望隐藏状态栏并将其值设置为NO。

BOOL statusBarHidden = NO;

然后在视图控制器的viewWillAppear中添加以下代码(状态栏隐藏在此视图中)

[[UIApplication sharedApplication] setStatusBarHidden:YES];
if(statusBarHidden == NO)
{
    self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0);
    statusBarHidden = YES;

}

答案 1 :(得分:1)

我想,你想隐藏状态栏并使用导航栏在全屏幕中设置视图控制器然后使用

[self.navigationController.view setNeedsLayout];

其他方法用于你想要隐藏状态栏....

[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:NO];
[self wantsFullScreenLayout];