我正在创建一个自定义的容器视图控制器,但是当我想调整其中一个子视图控件的视图的框架时,它的大小对于屏幕的方向来说并不好。
为了更精确地在我的容器的init方法中,我保留了2个实例变量(2个viewcontrollers)。然后在我的容器的viewdidload方法中,我想调整一个viewcontroller视图的框架,并将2添加为子视图。
我的问题是我只在横向工作,当我问其中一个视图控制器的框架尺寸时,高度和宽度是相反的。我的宽度应为1024,高度为748,但宽度为748,高度为1024!
你知道为什么吗?PS:在包括容器viewcontroller的所有viewcontrollers中,我将shouldautorotate方法设置为UIOrientationInterfaceIsLandscape()
非常感谢
答案 0 :(得分:7)
我不确定您的确切设置,但这里有一些可能有用的一般信息:
如果视图控制器非常靠近视图层次结构的顶部(或者实际位于顶部),您会发现您获得了宽度和高度的“交换”效果。交换通常在frame
上显示,但不在视图的bounds
上显示。这是因为bounds
实际上是应用于帧的一些变换 - 有时这些变换包括90度旋转(由于设备处于横向模式)。
请注意,检查frame
属性的确切时间也很重要。如果您在加载视图后但在屏幕上显示之前检查属性,则可能会出现“错误”结果。