屏幕比例/大小在iOS 8中是正确的,但在同一设备上的iOS 9中是错误的

时间:2015-09-29 22:18:48

标签: ios iphone ios8 ios9

我最近将Xcode更新为7,所以我可以开始针对iOS 9进行开发。首次启动我的应用程序时,我注意到屏幕尺寸/比例与iOS 8上的外观相比有所不同iPhone 6设备。

以下是它在iOS 8上的正确性:

image1

以下是iOS 9上看起来不正确的方式:

image2

如果您还注意到,这两个图像的大小完全相同。

请注意AdMob横幅在左/右方面的空白区域,我假设AdMob只知道将其居中。桌面视图右侧的大白色空间和底部的按钮也是如此。

此外,在iOS 8中,并在主委托方法中设置断点时,主窗口的帧为(0 0; 320 568)。窗口上的图层也是一样的。

另一方面,当在iOS 9中,并在主委托方法中放置一个断点时,主窗口的框架为(0 0; 375 667)。窗口上的图层也是一样的。

这解释了为什么iOS 8与iOS 9中应用程序外观的差异,但我不知道为什么iOS 8看起来像我想要的那样,iOS 9也没有。是否有一些我不知道的环境?

编辑:

我还发现,在iOS 8和iOS 9中运行时,主屏幕的界限是不同的。主屏幕的screenBounds设置为与上面相同的框架,我有不知道为什么两个iOS版本之间存在差异。

编辑2:

所以我刚刚创建了一个全新的项目并对其进行了测试。我没有得到与我在第一次编辑中所解释的相同的行为。当我在iOS 8和iOS 9中查看主屏幕边界时,它是(0,0; ​​375,667);

我无法弄清楚导致这种情况发生的原因所以我可以解决它。

编辑3:

昨晚玩弄了很多东西之后,事实证明发射图像正在导致这种情况发生。如果从列表中删除Default-568@2x.png的启动映像,则会正确显示。很奇怪这样的事情会影响规模。我仍然没有弄清楚如何解决这个问题,因为你必须有启动图像或苹果会拒绝该应用程序,所以我要保持这个开放,直到我今晚有更多的时间来玩它。

2 个答案:

答案 0 :(得分:3)

您在设备或模拟器上进行测试吗?如果在设备上,您的iOS 8设备可能启用了显示缩放:设置→显示&亮度→显示缩放。这将使iPhone 6(375✕667)认为它是iPhone 5(320✕568)。

答案 1 :(得分:0)

Apple一直在研究应用程序的功能,以决定应用程序可以处理的屏幕尺寸,并模拟确定应用可以应对的屏幕尺寸。

例如,您可能已添加320 x 568像素的启动屏幕图像。这告诉iOS你知道4个“设备;没有它你的应用程序将运行在320 x 480屏幕。为了支持iPhone 6,你将不得不添加一个375 x 667启动屏幕;没有它iOS报告你有只有iPhone 5大小的屏幕。

现在您正在使用iOS 9 SDK。当您使用该SDK时,Apple希望您处理任何屏幕大小,因此突然它会报告真正的屏幕大小为375 x 667(在6+上为414 x 736)。你不能再使用硬编码的尺寸了;你必须使你的应用适应屏幕边界。