iPhone XR返回正确的nativeBounds,但设备上的屏幕尺寸错误

时间:2018-11-12 14:53:36

标签: ios objective-c iphone ios12

我的项目目标是iOS-11及更高版本。它具有适当尺寸的XR和XS Max正确的启动图像资产。在模拟器上,我的应用程序可以在XR和XS Max上正常运行。

但是,用户报告了真实设备上的UI问题。经过一番研究,在实际设备上看起来像这样

[UIScreen mainScreen].nativeBounds.size

返回正确的值。但是似乎设备本身认为它具有iPhone X屏幕尺寸(例如当我不使用正确的启动屏幕图像时)。在我看来,它返回错误的值

[UIScreen mainScreen].bounds.size

我认为这返回的值不是iPhone XR,而是iPhone X。

有人也遇到过这样的问题吗?

3 个答案:

答案 0 :(得分:1)

iPhone XR在(虚拟)点上使用的尺寸与iPhone X或iPhone XS所用的尺寸不同。它使用与新iPhone XS Max相同的点尺寸,但仅使用@2x而不是@3x进行渲染,就像Max一样(每英寸密度较低的像素)。您可以了解有关每种iPhone型号here的屏幕尺寸,点,渲染尺寸等的更多信息。

在XCAsets中缺少启动图像的模板也会影响新一代的iPad,例如新的iPad Pro 11“与其他iPad具有的标准3/4宽高比略有不同。深入研究丢失的模板问题使我从2015年开始radar post来了解丢失的iPad Pro App图标和启动图像模板,其中评论指出:

[...] and Developer relations reported in a radar comment that they no longer support launch images and will not be adding the iPad pro launch image size to asset catalogs.

Apple似乎不鼓励在XCAssets中使用启动映像,并建议改为使用Launch Screen.storyboard。根据使用的设备或模拟器,它将“自动调整大小”为正确的尺寸(以及UIScreen.main.boundsUIScreen.main.nativeBounds的输出)。

答案 1 :(得分:0)

我遇到了同样的问题,并且找到了原因。您可以检查资产中的 LaunchImage 。 iPhone XR是否有图像?如果您没有 iPhone XR LaunchImage ,则XR的屏幕尺寸将与iPhone X一起计算。因此为XR制作LaunchImage 。 希望这会有所帮助。

答案 2 :(得分:0)

就我而言,问题出在特定的用户设备设置上。 设置->显示和亮度->显示变焦开关打开。 这会导致返回错误

[UIScreen mainScreen].bounds.size

重视运行时间