为什么需要@ 1x,@ 2x和@ 3x iOS图像?


77

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

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

我唯一能想到的就是它占用了更多的空间,但是对于简单的应用程序/简单的按钮,似乎不会造成任何问题。我已经在一些设备上进行了尝试,并且在模拟并执行此方法时看不出它们之间的差异。但是,随着我对应用程序和内容的深入研究,我确定该技术背后蕴含着实质。



3
尽管这是如上所述的重复问题(链接的答案非常好),但值得注意的是,现代版本的Xcode允许xcassets内包含pdf文件。其背后的想法是,您提供(矢量)pdf文件而不是大小为png的png,就好像它是@ 1x图像(这是pdf文档的尺寸,因为我们正在讨论矢量),并且将其标记为“单个矢量” '。然后Xcode将生成@Nx幕后任何设备所需的任何png。
Alladinian

Answers:


66

如果没有确切的大小,可能会发生两种情况:

升级

@3x@2x可以将其放大,@1x但通常视觉效果是模糊的,线条较粗且效果不佳。由于必须使用子像素,因此@3x从放大@2x可能会更糟。

缩小规模

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

通常,要使图像看起来完美,您需要避免缩小和放大。您总是可以只使用@2x@3x图像,并仅在看到视觉问题时添加其他比例。使用更高的分辨率不会改善缩小比例。高分辨率仅用于避免放大。从大规模降级(例如@100x@1x不会比从降低规模产生更好的结果@3x


我懂了。这一切对我来说都是有意义的,但是这又带来了另一个问题...如果我要基于设备使用这三种图像类型...当我拥有同时使用iPhone和iPad的应用程序以及为iPad缩放图像并看起来不错吗?那么我必须为iPhone提供3张图像,为iPad提供3张图像。...那么,您如何区分使用哪一个而不是1x,2x或3x?
CodeMark22

@ CodeMark22您会混淆比例和分辨率,但是可以,您可以为iPhone和iPad指定单独的资产。
苏珊(Sulthan)2015年

这里缺少的一个重要点是,我们需要3种尺寸的图像,因为我们不希望分辨率较低的iPhone 5的用户下载iPhone 6s图像。iPhone 5用户不会注意到质量上的很大差异,但是他将不必要地下载高分辨率的iPhone 6尺寸图像。
穆罕默德

1
@穆罕默德不一定是真的。10x10 px图像和20x20 px图像的大小差异不必很大-几个字节,分辨率更高的图像甚至可以比分辨率更高的图像小。请注意,压缩在png图像中起着重要作用。为每种资产添加1x变体可能是过度优化。
苏珊(Sulthan)2016年

1
对于每个苹果,都有一个应用程序切片的概念,可确保从应用程序商店下载iPhone 5变体上的应用程序的用户将获得2倍分辨率的资产。在iPhone 6变体上下载该应用程序的用户将获得3倍分辨率的资产。因此,@ Muhammad不用说,苹果玩得很聪明,只会根据设备变体下载应用程序的资产。希望能消除一些疑问。
iAviator

63

您需要3种图像资产中的图像,因为就比例或像素而言,有3种Apple设备(iPhone和iPad)

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

使用4 pixels(2 x 2) = 1 point@ 2x的Retina设备(iPhone 4+)

视网膜iPhone6和iPad,其表示为9 pixels (3 x 3) = 1 point@ 3x(iPhone6 +)

因此,为了以3种比例提供相同的图像,iOS会决定为哪些设备显示哪个图像。希望可以帮助您理解这一点。

编辑

在此处输入图片说明


这意味着如果1x中的图片为320px,则@ 2x中为1280px,您确定吗?
Mrug

没有,如果图像为320 px X 480 px,则没有图像只能在1x中具有1尺寸,然后在2x中将是其两倍。我指的是4像素,因为1点它们被平方在一起,因此在长度x宽度的尺寸中。他们加倍。
Saheb Roy

哦,您考虑了2维,并给出了总像素。好吧,你!我只是进行编辑以增加清晰度。
Mrug

根据en.wikipedia.org/wiki/Retina_Display的说法,似乎最早的Retina设备是iPhone 4,而不是此答案中提到的iPhone 5。
Liron Yahdav '16

@SahebRoy这不正确。iPhone 4具有Retina显示屏。
加百利

7

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

简而言之,这是减少内存/磁盘使用率,因此,这全都与提高性能和用户体验有关


5

首先,您需要了解点数与像素行为。在非视网膜设备上,点与像素之比为1point = 1pixel。在视网膜设备上,有两种比率:1point = 2x2像素(取决于屏幕尺寸)和1point = 3x3像素(由于像素密度)使得在非视网膜上观看时翻了四倍。
因此,您需要这3种类型的图像才能以最高分辨率显示。


3

补充苏珊说的话:

由于您未为特定设备提供适当的图像,因此必须缩小或放大。这些过程耗尽您的内存和处理能力,可能会导致性能下降,具体取决于您一次执行多少张图像以及图像的大小。


2

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

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

如您所见,仅生成一张图像会影响应用程序的性能和质量,并且会严重影响使用旧设备的应用程序。这是因为:

  1. 他们需要进一步缩小规模。此外,其设备的性能不如新设备,因此他们更有可能注意到应用程序的滞后
  2. 它们没有太多的存储空间,因此您真的希望能够使用应用程序精简来帮助他们
  3. 对于他们来说,质量损失将是最高的,考虑到其设备分辨率较低的事实,他们会注意到这一点。

因此,用户可能会感到不开心,这对您不利。因为根据我的经验,不满意的用户对您的应用进行评级的可能性是不满意的用户的10倍。你不想那样吗?:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.