为iOS 7和iOS 8的RootViewController获取不同的帧

为iOS 7和iOS 8的RootViewController获取不同的帧,ios,ipad,ios7,ios8,xib,Ios,Ipad,Ios7,Ios8,Xib,嗨,我面临一个奇怪的问题。我正在将UIViewController添加到窗口的RootViewController。 我已将ViewControllerXIB的自动调整大小设置为MaskAll。当我在iPad上以横向模式运行iOS 7时,屏幕大小为(1024768)。但当我在装有iOS 8的iPad上运行时,屏幕大小为(7681024)。我无法理解为什么会发生这种情况。因此,我的ViewController的子视图没有以适当的屏幕大小加载,因为我正在将ViewController的屏幕大小传递给

嗨,我面临一个奇怪的问题。我正在将UIViewController添加到窗口的RootViewController。 我已将ViewControllerXIB的自动调整大小设置为MaskAll。当我在iPad上以横向模式运行iOS 7时,屏幕大小为(1024768)。但当我在装有iOS 8的iPad上运行时,屏幕大小为(7681024)。我无法理解为什么会发生这种情况。因此,我的ViewController的子视图没有以适当的屏幕大小加载,因为我正在将ViewController的屏幕大小传递给它们。 有人能帮我吗

但当我在装有iOS 8的iPad上运行时,屏幕大小为(7681024)

这是因为在iOS 7及之前的版本中,应用程序旋转涉及对根视图控制器的视图应用旋转变换,而窗口和屏幕仍固定在设备上。但在iOS 8中,整个应用程序实际上是旋转的。这是一个重大更改,如果您希望进行旋转变换,它确实会破坏现有代码。另一方面,它也更好——在iOS 8中,旋转意味着屏幕、窗口、根视图控制器的视图都只是改变大小(它们交换高度和宽度)——这意味着如果你的应用程序启动到横向,它从一开始就具有正确的尺寸

如果您需要iOS 8中的纯设备坐标,可以使用新的UICoordinateSpace协议()获得它们

但当我在装有iOS 8的iPad上运行时,屏幕大小为(7681024)

这是因为在iOS 7及之前的版本中,应用程序旋转涉及对根视图控制器的视图应用旋转变换,而窗口和屏幕仍固定在设备上。但在iOS 8中,整个应用程序实际上是旋转的。这是一个重大更改,如果您希望进行旋转变换,它确实会破坏现有代码。另一方面,它也更好——在iOS 8中,旋转意味着屏幕、窗口、根视图控制器的视图都只是改变大小(它们交换高度和宽度)——这意味着如果你的应用程序启动到横向,它从一开始就具有正确的尺寸


如果您需要iOS 8中的纯设备坐标,您可以使用新的UICoordinateSpace协议()获取它们。

请看这是相同的基本问题。iOS 8中的横向屏幕大小报告方式与所有以前版本的iOS有所不同。我忘了这是在哪个WWDC视频中提到的,所以我无法向您指出文档。请看,这是同一个基本问题。iOS 8中横向屏幕大小的报告方式与所有以前版本的iOS有所不同。我忘了这是哪个WWDC视频了,所以我不能给你指文档。我应该补充一点,基本上你之前所做的一直都是错误的。您不应该查看屏幕大小,而应该使用约束来定位视图。这样,您的界面可以适应superview可能采用的任何尺寸。(观看WWDC 2014关于使你的应用程序自适应的视频,以了解更多关于这一新理念的信息…)我应该补充一点,基本上你之前所做的一直都是错误的。您不应该查看屏幕大小,而应该使用约束来定位视图。这样,您的界面可以适应superview可能采用的任何尺寸。(观看WWDC 2014关于使应用程序自适应的视频,以了解更多有关这一新理念的信息…)