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

问题描述 投票:0回答:4

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

828x1792

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

375x812(或750x1624)

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

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

ios swift screen-resolution iphone-xr
4个回答
1
投票

有两种不同的概念:UIKit大小和Native解析。

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

原始分辨率由像素表示,它表示设备的像素屏幕有多少。您可以通过将UIKit大小与本机比例因子相乘来获得设备的原始分辨率,该因子是每个设备的个体。

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

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'原始分辨率,所以检查你是否没有做任何额外的数学运算。


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,那么这个大小将在视图布局之前返回。


0
投票

你正在获得iphone X分辨率,这很可能是因为你在故事板中使用了iphone X.该代码首先为您提供故事板解决方案。如果要获得实际大小,请在使用分辨率的代码之前调用layoutIfNeeded()方法


0
投票

这是因为您的iPhone XR上启用了“显示缩放”。

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

© www.soinside.com 2019 - 2024. All rights reserved.