Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 旋转到纵向模式后iOS 8中的self.view.bounds_Iphone_Ios7_Autolayout_Ios8_Autorotate - Fatal编程技术网

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

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中不知怎么搞砸了

在我的应用程序中,我动态使用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}


因此,问题的根源在于,在iOS 8中,UIWindow与设备一起自动旋转,而View controller拒绝自动旋转。

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

for
ui屏幕-边界
状态:

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

在iOS 8之前,讨论部分简单地说:

包含屏幕的边框,以点为单位。(只读)


将视图添加到导航堆栈后,
框架
绑定
将调整到
ui窗口
,该视图将在屏幕上显示–在这些值未确定之前,通常会临时从
xib
填充这些值。(正确的值为
(320;568)
在iPhone 5上处于纵向模式)你在哪里这样做?在
视图willlayoutsubviews
?@JoeFryer,我假设它发生在视图生命周期的早期阶段–在
–viewDidLoad
方法中。@holex他说“当视图旋转到纵向时”,所以我假设它在
viewDidLoad
之后,并且是对旋转的响应。@JoeFryer,是的,在旋转时,它会得到正确的值,但他会先读取值,这就是为什么他不理解它为什么会改变。