iOS视图控制器在旋转后移动

4

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

2个回答

1
我通过不直接/以编程方式将视图渲染到窗口中来解决了这个问题。 相反,我创建一个根视图控制器,并在两种方向上放置和对齐它,并在其中放置所有其他视图。
发生这种情况的原因是应用程序的窗口始终是整个屏幕(包括顶部的状态栏)。 如果您尝试填充窗口,则必须处理和补偿状态栏和其他chrome。 如果您管理根视图中的所有视图,则更容易。

0

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

如果您在创建项目时使用了“视图为基础的应用程序”模板,则您的视图控制器应该位于MainWindow.xib中。只要在该NIB中为视图控制器启用状态栏属性(即选择灰色或黑色),您的视图控制器应该能够在初始启动时和旋转设备后正常工作。

如果您在创建项目时使用了“基于窗口的应用程序”模板,则您需要向应用程序委托的didFinishLaunchingWithOptions方法添加以下代码行:

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

这在某种程度上神奇地使得事情正确地设置好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接