真正的iPhone XR屏幕分辨率与swift给出的屏幕分辨率不同



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

828x1792

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

375x812(或750x1624)

为什么以及如何处理?!

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

有两个不同的概念:UIKit大小本机分辨率

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

原生分辨率由像素表示,它表示设备屏幕的像素数。您可以通过将UIKit大小与本机比例因子相乘来获得设备的本机分辨率,该比例因子对每个设备都是单独的。

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

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只是X射线原生分辨率的一些奇怪比例,所以请检查你是否没有做任何额外的计算。

这是因为iPhone XR上启用了"显示缩放"。

设置->显示&亮度->显示缩放->设置为标准

物理屏幕大小和UIKit大小(像素与点)之间存在差异。

UIKit使用点,一个点可以由多个像素组成(这是@2x,@3x)。

XR与其他X设备的主要区别在于XR使用@2x,而其他设备使用@3x。

以下是苹果的相关文档:https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html

PaintCode还制作了一个非常方便的图形来说明这一点:

https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

编辑以回答rmaddy的评论。

如果故事板设置为显示iPhone X,那么在视图布局之前,将返回该大小。

您正在获得iphoneX的分辨率,而这很可能是因为您在故事板中使用了iphoneX。该代码首先为您提供故事板分辨率。如果您想获得实际大小,请在使用分辨率的代码之前调用layoutIfNeedd()方法

相关内容

  • 没有找到相关文章

最新更新