如果所有 iPad 都具有相同的 768x1024 屏幕尺寸,那么 "scale" 有什么用?

If all iPads have the same 768x1024 screen size, what is the "scale" for?

模拟器显示所有 iPad 的尺寸相同 (768 x 1024)。 对吗?

由于设备的尺寸相同,是否可以放置一个 100x100 的矩形并期望它看起来相同?还是会因为规模的原因看起来不一样?

请向我解释一下比例尺的用途:我是否必须调整我的矩形尺寸以适应比例尺?

iOS 使用抽象的显示尺度:点。一个点是 1/72 英寸。

迷你 iPad 作弊。 mini 上的点实际上小于 1/72 英寸,但为了讨论的目的,我们将忽略它。 iPad mini 仍然使用点数进行渲染。但是生成的图像较小。

iOS也有一个规模属性。尺度 属性 表示一个点中有多少个物理像素。 Retina iPad 的比例为 2。因此,如果您在 Retina iPad 上绘制一个 1 点乘 1 点的矩形,它实际上将使用 2 x 2 屏幕像素绘制。忽略 mini,矩形在 Retina 和非 Retina 设备上的大小相同。每个点在非视网膜设备上将呈现为 1 个像素,在视网膜设备上将呈现为 2x2 或 4 个像素。

Retina 设备的优势在于抗锯齿曲线、对角线和连续色调图像(如渐变和全彩图片)。这些都在 Retina 和非 Retina 设备上以相同的比例渲染内容,但在 Retina 设备上有更多细节。抗锯齿是在像素级别完成的,因此对角线和曲线看起来更平滑、更自然。这对文本有很大好处,在视网膜设备上看起来更清晰、更好。文本在 Retina 和非 Retina 设备上的显示大小相同,但由于 Retina 设备的像素是它的 4 倍,因此能够以更高的分辨率呈现文本。

(照片不会神奇地在视网膜设备上获得更高的分辨率。您应该同时提供图像的非视网膜和视网膜版本,并使用“@2x”后缀命名视网膜图像。)所以你可能有图片“flower.png”。您还需要提供“flower@2x.png”。在您的代码中,您将使用代码

UIImage *anImage = [UIImage imageWithName: "flower"];

(如果您不指定后缀,系统假定后缀为“.png”。)

在 Retina 设备上,系统将检查文件“flower@2x.png”。如果找到它,它将使用它,并假设它在每个维度上包含的像素数量是非视网膜图像的两倍。如果它找不到视网膜图像,它将使用非视网膜图像并将每个图像像素保存为 4 个屏幕像素,从而创建一个不那么清晰和详细的图像。非视网膜设备也是如此。这些设备只是忽略图像的@2x 版本并加载常规图像。

iPhone

在 iPhone 的世界里还有 iPhone 6 plus,它的屏幕每点有 3x3 像素。如果您支持 iPhone 和 iPad,那么您需要提供非视网膜分辨率、@2x 和 @3x 的图像。请注意,如果您是 iPhone-only,则不再需要提供非视网膜图像,因为所有 iPhone 能够 运行 最后几个 iOS 版本都是视网膜图像设备。 iPhone 3Gs 是最后一个非视网膜 iPhone。只能运行 iOS <= iOS 6,大多数开发者已经不支持了。