旋转到纵向模式后,iOS 8中的self.view.bounds

时间:2014-08-08 09:20:55

标签: iphone ios7 autolayout ios8 auto-rotation

在我的应用中,我动态使用self.view.bounds定位子视图,我没有使用Autolayout。在iOS 8上将视图旋转为纵向模式时,我看到self.view.bounds在显示视图后为{568,320},而不是iOS 7上{320,568}的自然行为。我如何做到这一点?< / p> 编辑:我忘了提到我在做什么。这发生在viewDidAppear:中。 self.view.bounds的值在viewWillAppear中是偶然正确的,但不知何故它在viewDidAppear中被搞砸了:。

编辑2:我在进一步钻探时发现了这里。以下是我的代码所特有的场景:

一个。我在代码中通过在视图启动时仅返回横向方向来阻止自动旋转(这与我正在进行的相机和opengl设置有关,我不想自动旋转界面,直到所有设置完成,

b。视图在XIB中是自由形式的,具有灵活的宽度,高度和自动调整蒙版的所有边缘。

℃。基于上面的调整大小掩码,即使没有发生自动旋转,iOS 7也会使self.view.bounds大小等于{320,568}。 iOS 8以某种方式忽略了相同的大小调整掩码&amp;界限仍然是{568,320}

问题的根源是UIWindow在iOS 8中使用设备自动旋转,而View控制器拒绝自动旋转。

1 个答案:

答案 0 :(得分:0)

在iOS 8中,[[UIScreen mainScreen] bounds]返回的矩形考虑了设备的旋转。当设备处于横向时,不再返回纵向框架。

UIScreen -bounds州的updated-for-iOS-8 docs

  

此矩形在当前坐标空间中指定,该空间考虑了对设备有效的任何界面旋转。 因此,当设备在纵向和横向之间旋转时,此属性的值可能会更改

在iOS 8之前,讨论部分只是说:

  

包含屏幕的边界矩形,以磅为单位。 (只读)