真实的iPhone XR屏幕分辨率与swift提供的屏幕分辨率不同吗?

时间:2019-01-11 14:01:08

标签: ios swift screen-resolution iphone-xr

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

828x1792

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

375x812(或750x1624)

为什么以及如何处理?!

注意:除此一款外,所有iPhone Xx都可以正常工作-iphone XR(+ iphone XR模拟器)

4 个答案:

答案 0 :(得分:1)

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

UIKit使用点,一个点可以包含多个像素(这是@ 2x,@ 3x的位置)。

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

以下是Apple的文档: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,那么在布局视图之前,将返回该大小。

答案 1 :(得分:1)

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

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

本机分辨率由像素表示,它表示设备的屏幕有多少像素。您可以通过将UIKit大小乘以本地比例因子来获得设备的本机分辨率。

我为所有支持iOS 12的iPhone创建了这些尺寸,摩擦系数和分辨率的表格

select * from viewname
where columnname = 'A'  -- the condition
order by columnname 
limit 5;

...在此表中,您可以看到您的iPhone Xr的UIKit大小为 414x896 ,而不是问题中所写的 375x812

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

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

通过获取原始边界来获得原始分辨率

UIScreen.main.bounds

...这些选项都适用于iPhone Xr,因此请再次检查是否在iPhone Xr而不是UIKit尺寸为 375x812 的iPhone Xs / X上运行代码。另外,此 750x1624 只是Xr原始分辨率的某种怪异比例,因此请检查是否没有做任何额外的数学运算。

答案 2 :(得分:0)

您获得iphone X分辨率,这很可能是因为您在情节提要中使用了iphoneX。该代码首先为您提供情节提要分辨率。如果要获取实际大小,请在使用分辨率的代码之前调用layoutIfNeeded()方法

答案 3 :(得分:0)

这是因为在iPhone XR上启用了“显示缩放”功能。

  

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