旋转后iOS视图控制器移位

时间:2010-11-27 15:09:55

标签: ios uiview uiviewcontroller rotation

我正在开发iOS应用程序。我的app委托将我的视图控制器加载到窗口并正确显示,除了一个警告:我的视图控制器上的视图在Y轴上没有下降得足够远,状态栏剪切了我的顶视图。我更改了我的视图控制器的XIB文件以适应这一点,所以现在我的所有视图都从Y轴向下开始20像素。在初始加载时,一切看起来都很好。当我旋转时,我的视图比它们应该低20个像素(由于我的布局改变以适应第一次加载)。我想知道的是如何更好地处理视图控制器中的定位以处理状态栏高度。

2 个答案:

答案 0 :(得分:1)

我通过不直接/以编程方式将视图呈现到Window中来处理此问题。我所做的是创建一个RootViewController,它在两个方向上正确放置和对齐,并在RootViewController中包含所有其他视图。

发生这种情况的原因是应用程序的窗口始终是整个屏幕(包括顶部的状态栏)。如果您尝试填充窗口,则必须处理并补偿状态栏和其他镶边。如果您管理根视图中的所有视图,则会更容易。

答案 1 :(得分:0)

您的解决方案取决于您创建项目的方式。

如果您在创建项目时使用了基于视图的应用程序模板,那么您将在MainWindow.xib中拥有视图控制器。您的视图控制器应该在最初(启动时)以及旋转设备后正常工作,前提是您为该NIB中的视图控制器启用了状态栏属性(即,选择了灰色或黑色)。

如果在创建项目时使用了基于窗口的应用程序模板,则必须将以下代码行添加到应用程序委托的didFinishLaunchingWithOptions:

myViewController.view.frame = window.screen.applicationFrame;

以某种方式神奇地设置正确的东西。