2

我正在创建一个自定义容器视图控制器,但是当我想调整其中一个子视图控制器视图的框架大小时,它的大小对于屏幕的方向并不好。

为了在我的容器的 init 方法中更准确,我保留了 2 个实例变量(2 个视图控制器)。然后在我的容器的 viewdidload 方法中,我想调整一个视图控制器的视图框架并将 2 添加为子视图。

我的问题是我只在横向工作,当我询问其中一个视图控制器的帧大小时,高度和宽度是相反的。我应该有 1024 的宽度和 748 的高度,但我得到了 748 的宽度和 1024 的高度!

你知道为什么吗 ?

PS:在包括容器视图控制器在内的所有视图控制器中,我将 shouldautorotate 方法设置为 UIOrientationInterfaceIsLandscape()

非常感谢

4

1 回答 1

7

我不确定您的确切设置,但这里有一些可能会有所帮助的一般信息:

当您的视图控制器非常靠近视图层次结构的顶部(或实际上在顶部)时,您会发现您获得了宽度和高度的这种“交换”效果。交换通常在视图上显示frame,而不是在bounds视图上。这是因为bounds实际上将一些变换应用于框架 - 有时这些变换包括 90 度旋转(由于设备处于横向模式)。

请注意,检查房产的确切时间frame也很重要。如果您在视图加载之后但在它出现在屏幕上之前检查属性,您可能会得到“错误”的结果。

于 2012-08-17T21:15:17.903 回答