Iphone 旋转到纵向模式后iOS 8中的self.view.bounds
在我的应用程序中,我动态使用self.view.bounds来定位子视图,而不是使用Autolayout。当视图在iOS 8上旋转到纵向模式时,我看到self.view.bounds在视图出现后为{568,320},这与iOS 7上{320568}的自然行为相反。我怎样才能做到这一点 编辑:我忘了提到我在哪里做这件事。这在ViewDidDisplay中发生:。self.view.bounds的值在ViewWillDisplay中顺便说一句是正确的,但在ViewDidDisplay中不知怎么搞砸了: 编辑2:这是我在进一步钻探中发现的。以下是我的代码特有的场景: a。在代码中,当视图启动时,我只返回横向方向,从而阻止自动旋转(这与我正在进行的相机和opengl设置有关,在所有设置完成之前,我不想自动旋转界面 b、 该视图在XIB中是自由形式的,并且在自动调整大小遮罩中具有灵活的宽度、高度和所有边缘 c、 基于上述调整大小掩码,iOS 7给出的self.view.bounds大小等于{320568},即使没有发生自动旋转。iOS 8不知何故忽略了相同的调整大小掩码&边界仍然是{568320}Iphone 旋转到纵向模式后iOS 8中的self.view.bounds,iphone,ios7,autolayout,ios8,autorotate,Iphone,Ios7,Autolayout,Ios8,Autorotate,在我的应用程序中,我动态使用self.view.bounds来定位子视图,而不是使用Autolayout。当视图在iOS 8上旋转到纵向模式时,我看到self.view.bounds在视图出现后为{568,320},这与iOS 7上{320568}的自然行为相反。我怎样才能做到这一点 编辑:我忘了提到我在哪里做这件事。这在ViewDidDisplay中发生:。self.view.bounds的值在ViewWillDisplay中顺便说一句是正确的,但在ViewDidDisplay中不知怎么搞砸了
因此,问题的根源在于,在iOS 8中,UIWindow与设备一起自动旋转,而View controller拒绝自动旋转。在iOS 8中,由
[[UIScreen mainScreen]bounds]
返回的矩形考虑了设备的旋转。当设备处于横向时,将不再返回纵向帧
forui屏幕-边界
状态:
此矩形是在当前坐标空间中指定的,该坐标空间考虑了对设备有效的任何接口旋转。因此,当设备在纵向和横向方向之间旋转时,此属性的值可能会更改。
在iOS 8之前,讨论部分简单地说:
包含屏幕的边框,以点为单位。(只读)
将视图添加到导航堆栈后,
框架
和绑定
将调整到ui窗口
,该视图将在屏幕上显示–在这些值未确定之前,通常会临时从xib
填充这些值。(正确的值为(320;568)
在iPhone 5上处于纵向模式)你在哪里这样做?在视图willlayoutsubviews
?@JoeFryer,我假设它发生在视图生命周期的早期阶段–在–viewDidLoad
方法中。@holex他说“当视图旋转到纵向时”,所以我假设它在viewDidLoad
之后,并且是对旋转的响应。@JoeFryer,是的,在旋转时,它会得到正确的值,但他会先读取值,这就是为什么他不理解它为什么会改变。