首页 > 解决方案 > 真iPhone XR屏幕分辨率和swift给出的屏幕分辨率不一样?

问题描述

iPhone XR屏幕分辨率根据截图、苹果官网等:

828x1792

根据 Swift 的 iPhone XR 屏幕分辨率:

375x812(或 750x1624)

为什么以及如何处理它?!

注意:除此之外,所有 iphone Xx 都能正常工作 - iphone XR(+iphone XR 模拟器)

标签: iosswiftscreen-resolutioniphone-xr

解决方案


有两个不同的概念:UIKit sizeNative resolution

UIKit 大小由表示,并在您在项目中定位视图时使用。假设您的屏幕大小为 414x896 点,并且您将视图居中到位置 [207,448],您的视图将位于屏幕的中心。

原生分辨率由像素表示,它告诉设备屏幕有多少像素。您可以通过将 UIKit 大小与每个设备各自的原生缩放因子相乘来获得设备的原生分辨率。

我为所有支持 iOS 12 的 iPhone 创建了这些尺寸、比例因子和分辨率的表格

iPhone       | UIKit size (points) | Native resolution (pixels) | Native Scale factor
-------------|---------------------|----------------------------|--------------------
Xs Max       | 414x896             | 1242x2688                  | 3
X, Xs        | 375x812             | 1125x2436                  | 3
Xr           | 414x896             | 828x1792                   | 2
6+,6s+,7+,8+ | 414x736             | 1080x1920                  | 2.608
6,6s,7,8     | 375x667             | 750x1334                   | 2
5s,SE        | 320x568             | 640x1136                   | 2

...从这张表中,您可以看到您的 iPhone Xr 的 UIKit 尺寸为414x896,而不是您在问题中所写的375x812 。

您可以通过获取屏幕的边界来获取设备的 UIKit 大小

UIScreen.main.bounds

通过获取本机边界和本机分辨率

UIScreen.main.nativeBounds

...这些中的每一个都适用于 iPhone Xr,因此请再次检查您是否在 iPhone Xr 上运行代码,而不是在 UIKit 大小为 375x812的 iPhone Xs/X 上运行代码。此外,这个750x1624只是 Xr 原始分辨率的一些奇怪比例,因此请检查您是否没有做任何额外的数学运算。


推荐阅读