隐藏UIStatusBar如何应用于显示的UIViews?

时间:2009-07-30 15:13:58

标签: iphone objective-c cocoa-touch uiview

我有一个主要由导航栏驱动的应用程序。少数情况需要呈现模态视图,其中一种情况需要隐藏状态栏。但是,即使我在呈现模态视图之前隐藏状态栏,视图也会偏移20个像素。

即使我在视图出现后将模态视图的框架设置为0,20,320,480,它也会切断视图的顶部。

我还希望用户能够在点击屏幕时显示状态栏(和工具栏),就像视频播放器的工作方式一样。所以我将这个屏幕的样式设置为黑色透明,我希望隐藏或显示状态栏不会导致视图上下跳动。

2 个答案:

答案 0 :(得分:2)

您是否查看了UIViewControllers上的wantsFullScreenLayout属性?

答案 1 :(得分:2)

从下面的评论中看到您的目标是iPhone OS 2.x,我有一个可能有帮助的建议。

在展示您的模态视图之前,请执行以下操作:

  [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
  [[self view] setFrame:CGRectMake(0, 0, 320, 480)];

确保您的模态视图实际上是480px高 - 有一次我被底部空的20px空间所欺骗。原来这是因为我的视图仍然是460px高(考虑状态栏)所以代码实际工作,但我的视图不是正确的高度。

隐藏模态视图时,这有效:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
[[self view] setFrame:CGRectMake(0, 20, 320, 460)];

如果您使用presentModalViewController,可能需要稍微改变一下代码 - 我使用-addSubview尝试了这一点,因为我使用的是自定义动画。但基本原则应该是相同的(即改变父视图的框架)。