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

在同一设备上,iOS 8的屏幕比例/大小正确,但iOS 9的屏幕比例/大小错误,ios,iphone,ios8,ios9,Ios,Iphone,Ios8,Ios9,我最近将Xcode更新为7,这样我就可以开始针对iOS9进行开发了。在第一次启动我的应用程序时,我注意到屏幕大小/比例与iOS 8上的屏幕大小/比例相比是不合适的,iOS 8上的屏幕大小/比例都是iPhone 6设备上的 以下是它在iOS 8上的正确外观: 以下是它在iOS 9上看起来不正确的原因: 如果您还注意到,这两个图像的大小完全相同 请注意AdMob横幅的左/右空白,我假设AdMob只知道将其居中。还有表格视图右侧的大空白和底部的向下按钮 此外,在iOS 8中,在主委托方法中放置断点

我最近将Xcode更新为7,这样我就可以开始针对iOS9进行开发了。在第一次启动我的应用程序时,我注意到屏幕大小/比例与iOS 8上的屏幕大小/比例相比是不合适的,iOS 8上的屏幕大小/比例都是iPhone 6设备上的

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

以下是它在iOS 9上看起来不正确的原因:

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

请注意AdMob横幅的左/右空白,我假设AdMob只知道将其居中。还有表格视图右侧的大空白和底部的向下按钮

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

另一方面,在iOS 9中,在主委托方法中放置断点时,主窗口的帧为(0 0;375 667)。窗口上的层也是相同的

这就解释了为什么iOS 8和iOS 9的应用程序外观不同,但我不知道为什么iOS 8的外观是我想要的,而iOS 9的外观不是。有什么我错过的场景吗

编辑:

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

编辑2:

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

我只是不知道是什么导致了这一切,所以我可以修复它

编辑3:


在昨晚玩了很久之后,结果是发射图像导致了这种情况的发生。如果我删除默认的启动映像-568@2x.png从列表中选择,然后正确显示。很奇怪,像这样的事情会影响规模。但我仍然不知道如何解决这个问题,因为你必须有发布图片,否则苹果会拒绝该应用程序,所以我会一直打开这个程序,直到今晚有更多时间玩它。

你是在设备或模拟器上测试吗?如果在设备上,您的iOS 8设备可能已启用显示缩放:设置→ 显示与亮度→ 显示缩放。这将是一款iphone6(375)✕ 667)我想是iPhone 5(320✕ (568)。

苹果一直在研究你的应用程序的功能,以决定你的应用程序可以处理的屏幕大小,并模拟你的应用程序可以处理的屏幕大小

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


现在您正在使用iOS 9 SDK。当您使用该SDK时,苹果希望您能够处理任何屏幕大小,因此它突然报告实际屏幕大小为375 x 667(6+上为414 x 736)。您不能再使用硬编码大小;您必须根据屏幕边界调整应用程序。

我正在自己的设备上测试iOS 8,以及iOS 8和iOS 9的模拟器。iOS 8的模拟器和我自己的设备都“正确”“看起来就像第一个屏幕截图。模拟器中的iOS 9看起来与屏幕截图中的一样错误。我刚刚检查了设备上的设置,显示缩放设置为“标准”,而不是“缩放”。这就是为什么我想知道代码中是否有某种设置导致了这种情况。您是否在
viewDidLoad
中进行布局?如果是,请等待,直到出现
视图
。为什么不在你的启动屏幕上使用
LaunchScreen.storyboard