为什么我需要@1x、@2x 和@3x iOS 图片?

Why do I need @1x, @2x and @3x iOS images?

为什么我们需要这 3 种特定的图像类型?

如果我的应用程序上有一个带有背景图片的按钮,比如 50 像素 x 50 像素,为什么我需要这张图片的 3 个版本?是什么阻止我只制作一张分辨率更高的图像,比如 700x700,所以当它在任何 iPhone 上缩小时,它都不会低于设备想要的最大分辨率?

我唯一能想到的就是占用更多 space,但对于简单的应用程序/简单的按钮来说,它似乎不会引起任何问题。我已经在一些设备上尝试过,当我模拟它并执行此方法时,它们之间没有任何区别。但是,随着我越来越深入地研究应用程序和其他东西,我确信这项技术背后有实质内容。

首先,您需要了解点与像素的行为。在非视网膜设备上,点与像素的比率为 1 点=1 像素。在 Retina 设备上,有两个比率:1point = 2x2 像素,具体取决于屏幕尺寸,以及 1point=3x3 像素,因为像素密度,在非视网膜上观看是四倍。
这就是为什么你需要这 3 种类型的图像,以其最高分辨率显示。

如果您没有确切的尺寸,可能会发生两种情况:

升级

@3x@2x 可以从 @1x 放大,但通常视觉结果模糊,线条粗,看起来不太好。从 @2x 升级 @3x 可能会更糟,因为必须使用子像素。

缩减

一般来说,结果比放大要好得多,但是,这并不适用于所有图像。如果 @3x 图像上有 1px 边框,将其缩小到 @1x 后边框将不可见 (0.33px)。这同样适用于图像中的任何小物体。缩小比例会破坏所有细节。

一般来说 - 为了使图像看起来完美,您需要同时避免缩小和放大。您始终可以只使用 @2x@3x 图像,只有在看到视觉问题时才添加其他比例。使用更高的分辨率不会改善缩小比例。高分辨率仅用于避免放大。从高尺度(例如 @100x)缩小到 @1x 不会产生比从 @3x.

缩小更好的结果

这是因为如果您提供一张高分辨率图片,那将是 space 在用户设备上的浪费。由于应用程序切片,设备将仅下载(从 App Store)实际适合设备的部分(因此视网膜设备不会下载非视网膜图形)。这就是 Apple 创建资产目录并遵循此类规则的原因。他们在会议中对此进行了描述。

简而言之就是减少memory/disk使用,所以这一切都是为了提高性能和用户体验

补充苏丹的话:

因为您没有为特定设备提供合适的图像,所以它必须缩小或放大。这些进程 耗尽您的内存和处理能力,从而可能导致性能下降,具体取决于您一次执行此操作的图像数量和图像大小。

您需要 Image Assets 中的 3 种图像,因为在缩放或像素方面 有 3 种 Apple 设备(iPhone 和 iPad),即

普通设备 1 pixel = 1 point@1x(较旧的 iPhone 和 iPad 设备)

视网膜设备 4 pixels(2 x 2) = 1 point@2x (iPhone 4+)

Retina iPhone6 和 iPad 术语 9 pixels (3 x 3) = 1 point@3x (iPhone6+)

因此,为了在 3 个比例中提供相同的图像,iOS 决定显示哪个图像 devices.Hope 可以帮助您理解这一点。

编辑

如果您只提供一张大图,您会遇到几个问题:

  1. 缩小比例会导致质量下降(即使不是很大)
  2. 缩小图像比显示已经预渲染的图像需要更多的计算能力
  3. 您的二进制文件的大小增加了,您无法从 iOS 9.
  4. 引入的应用程序精简中受益

如您所见,仅生成一张图片会影响应用的性能和质量,并且会对那些使用旧设备的应用产生不成比例的影响。这是因为:

  1. 他们需要进一步缩小规模。此外,他们设备的性能不如新设备,因此他们更有可能注意到您的应用程序存在延迟
  2. 他们没有那么多的存储空间space所以你真的希望能够使用应用程序瘦身来帮助他们
  3. 质量损失对他们来说是最大的,考虑到他们设备的分辨率低,他们会注意到这一点。

因此,用户可能会不高兴,这对您不利。因为,根据我的经验,不满意的用户给您的应用评分的可能性是满意用户的 10 倍。你不想这样,是吗? :)