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

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

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

有帮助吗?

解决方案

从下面的评论中看到您的目标是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 ,因为我使用的是自定义动画。但基本原则应该是相同的(即改变父视图的框架)。

其他提示

你有没有看过 wantsFullScreenLayout 属性?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top