【问题标题】:iOS - reversed height/width with orientationiOS - 具有方向的反转高度/宽度
【发布时间】:2012-08-17 20:02:08
【问题描述】:

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

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

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

你知道为什么吗?

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

非常感谢

【问题讨论】:

    标签: iphone ios ipad uiview uiviewcontroller


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我在视图出现在屏幕上之前检查属性也许这就是为什么没有交换
    • 您可以通过在 viewDidLoad 和 viewDidAppear 中打印视图的宽度和高度来尝试它 - 在第一种情况下,它似乎被交换为横向。
    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多