显示/隐藏iPhone状态栏后调整内容大小

时间:2011-11-09 15:46:03

标签: ios

我有一个iPhone应用程序,我想从隐藏状态栏开始,显示启动画面,并在加载要显示的内容时切换状态栏(由于必须加载它需要一些时间在互联网上),使用[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]。我希望我的内容视图在状态栏显示和隐藏后调整大小并正确定位。我希望我的应用程序能够以任何设备方向运行(可能不包括苹果指南中指定的自上而下的方向)。

我的问题是我无法让应用程序显示出来。它在自动旋转后显示20pt的空白区域,或者在显示时隐藏在状态栏下方。

处理此问题的正确方法应该是什么?

我还没有测试过,但我想来电吧会出现同样的问题。

修改

我会试着更好地解释问题所在。当应用程序启动时,状态栏隐藏,在窗口坐标系中,窗口可见区域的顶角在窗口坐标系中为0,0。然后我在状态栏中滑动。这不会改变窗口大小,因此0,0点现在隐藏在状态栏后面。窗口可见区域的左上角是0,20,我必须将视图移动到那些坐标(并将其正确调整为320 * 460)。但是如果我旋转设备,然后回到原始位置,可见窗口区域的左上角坐标再次变为0,0,窗口现在大小为320 * 480.

解决方法是保留一个标记,告诉手机之前是否已经旋转过,但是当我旋转到另一个位置然后回来时,是否有办法让窗口坐标不变?

3 个答案:

答案 0 :(得分:1)

是的,调用栏出现了同样的问题。或者,录音条也可以做同样的事情。 (启动语音备忘录应用程序录制更容易也可能更便宜,并回到您的应用程序来测试它如何处理额外的栏。)

在视图上设置自动调整大小的蒙版通常会为您调整内容。

如果要在XIB中构建UI,则可以使用这些设置,直到视图在条形更改或设备或模拟器旋转时正确更改大小。

请记住,包含的子视图中的蒙版设置也很重要。

答案 1 :(得分:0)

@ walt的答案真的有效吗?我试图将这个标志添加到每个视图控制器的视图属性中,但没有任何运气,我错过了吗?

self.view.autoresizingMask =  UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

This solution解决了我的问题,但看起来很难看。我必须手动调整视图控制器视图框的大小。

答案 2 :(得分:0)

这应该可以解决您的问题

只是一个观点:

[self.view setFrame: [self.view bounds]];

内部带滚动视图的视图

[self.view setFrame: [self.view bounds]];
[self.theScroller setFrame: [self.view bounds]];

“theScroller是我的滚动视图的名称