2010-11-27 88 views
4

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

回答

1

我已经通过不直接/编程方式将视图渲染到窗口中来解决了这个问题。我所做的是创建一个RootViewController,它在两个方向上放置并正确对齐,并在RootViewController中具有所有其他视图。

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

0

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

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

如果使用的是基于窗的应用程序模板,当您创建的项目,你必须将下面的代码行添加到您的应用程序委托的didFinishLaunchingWithOptions:

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

不知何故神奇地把事情成立正确。

相关问题