如何为每个设备添加iOS @1x、@2x和@3x图像?

5

最近我提出了一个关于为什么要使用上述三种不同的图片类型的问题,并得到了很好和详细的回答。这也引发了我对另一件事情的质疑...

假设我正在使用XCode(带有SWIFT)并且为iPhone上的特定UIImage拥有三个图像大小@1x,@2x,@3x。现在,我想让它在iPad上看起来漂亮,所以我添加了一些缩放。然而,这将改变我需要用于iPad的1x,2x,3x图像的大小,因此我需要制作3个新的图像来补偿新的大小。那么现在XCode如何区分两者?我需要检查我正在使用的屏幕尺寸,然后选择图像吗?

我读到资产可以帮助我,但那只涉及iPhone vs. iPad,如果我在iPhone 4、5、6和iPad上缩放我的图像怎么办?那是很多不同的尺寸和@x图像,我读到苹果不喜欢设备检查,所以我不确定那会怎样实现。

我希望这有意义。我知道每个设备都有@1x,2x,3x,但如果我的应用程序被设计用于通用设备使用,那么我如何在代码中管理所有这些不同的尺寸以适合正确的设备?


听起来你想在不同设备上使用相同比例的不同尺寸图片?实际上,你其实不需要这样做。手机上的2倍图像与iPad上的2倍图像是一样的。 - JDM
2个回答

3
你真的应该使用图像资源目录。这使得它变得非常容易。以下是苹果给出的定义,以便您知道这不是谣言:
图像集:用于大多数类型的图像,图像集包含支持各种设备和比例因子所需的图像的所有版本或表示。
并且它进一步解释道:
资产目录中的每个集合都有一个名称。您可以使用该名称以编程方式加载集合中包含的任何单个图像。要加载图像,请调用平台特定的类方法,传递包含图像的集合的名称。操作系统将从最适合当前比例因子的集合中加载图像 所以你真的没有太多要做的。我不知道你听到了相反的消息在哪里。 在此处查看文档

好的,从你所说的来看,我可以将所有具有不同分辨率的潜在图像放入特定的集合中。然后,我只需引用该集合,操作系统就会为该特定情况选择最佳图像,因此我不必进行所有这些设备和兼容性检查。我原本以为我必须在每种情况下包含对精确图像的引用,但现在看来它比我最初想象的要宽松得多...至少我认为这就是你所说的。 - CodeMark22
@CodeMark22, 大概就是这样了。 - soulshined

-3
你需要检查最大图片的尺寸,如果你正在使用iPad,则需要确定UIImageView框架的大小。例如,如果它是400*400pts,那么你的图片将是1200*1200。只需使用一张图片。我认为你不需要包括@2x和@1x。1200*1200覆盖了最大可能的图像,并且缩小仍然有足够的像素留给其他设备上完整的@3x分辨率。这就是我理解的方式。我自己也曾经想过这个问题,只发现@1x @2x @3x对于我没有随着屏幕尺寸增加而扩展的一些按钮是有用的。

在低分辨率显示器上使用较低的分辨率可以提高渲染性能。 - Darko
是的,我创建了一个应用程序,在其中设置了它所需的最大尺寸,在较小的设备上,它会缩小并不丢失任何像素。但正如Darko所说,我想知道对于更大的应用程序,是否会使事情变得有些脆弱和慢。到目前为止,它似乎很好,因为我只在几个按钮中使用它。然而,随着事情变得更加复杂,你永远不知道,所以我正在寻找更多的标准做法。 - CodeMark22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接