【问题标题】:Adding iOS @1x, @2x, @3x PER device, how to?为每个设备添加 iOS @1x、@2x、@3x,如何?
【发布时间】:2015-11-29 14:59:10
【问题描述】:

我最近问了一个关于为什么我们使用上面列出的 3 种不同图像类型的问题,并得到了很好/详细的回答。这也让我质疑其他事情......

假设我在 XCode(使用 SWIFT)中工作,并且在 iPhone 上针对特定的 UIImage 具有 @1x、@2x、@3x 三种图像尺寸。现在,我希望它在 iPad 上看起来不错,所以我添加了一些缩放。但是,这会改变 iPad 所需的 1x、2x、3x 图像的尺寸,因此我需要再制作 3 个图像来补偿新尺寸。现在 XCode 将如何区分这两者?我是否需要检查我使用的屏幕尺寸,然后选择图像?

我读到资产可以帮助我,但这只涉及 iPhone 与 iPad,如果我在 iPhone 4、5、6 和 iPad 上缩放我的图像会怎样。有很多不同的尺寸和@x 图片,我读到 Apple 不喜欢设备检查,所以我不确定这会如何发生。

我希望这是有道理的。我得到每个设备的@1x、2x、3x,但如果我的应用是为通用设备使用而设计的,那么如何在代码中为合适的设备管理所有这些不同的大小?

【问题讨论】:

  • 听起来您想要在不同设备上以相同比例获得不同尺寸的图像?你真的不需要这样做。手机上的 2x 图像与 ipad 上的 2x 图像相同。

标签: ios swift resolution scaling pixels


【解决方案1】:

您确实应该使用图像资产目录。它使它几乎太容易了。这是 Apple 给出的定义,所以你知道这不是道听途说:

图像集:用于大多数类型的图像,图像集包含支持各种设备和比例因子所需的图像的所有版本或表示。

它会继续下去:

资产目录中的每个集合都有一个名称。您可以使用该名称以编程方式加载集合中包含的任何单个图像。要加载图像,调用平台特定的类方法,传入包含图像的集合的名称。 操作系统将从最适合当前比例因子的集合中加载图像

所以你真的没什么可做的。我不知道你在哪里听到相反的声音

See Documentation here

【讨论】:

  • 好的,所以根据您的说法,我可以将所有具有不同分辨率的潜在图像放入该特定集合中。然后,我只需引用该集合,操作系统就会为该特定情况选择最好的集合,因此我不必执行所有这些设备和兼容性检查。我的印象是,我必须在每种情况下都包含对精确图像的引用,但看起来它比我最初想象的要宽松......至少我认为你是这么说的。
  • @CodeMark22 总结一下
【解决方案2】:

您需要检查最大图像的大小,如果您使用的是 iPad,请确定 UIImageView 框架的大小。例如,如果它是 400*400pts,那么您的图像将是 1200*1200。只需使用单个图像。我认为您不需要包含@2x 和@1x。 1200*1200 覆盖了您的基础以获得最大可能的图像,并且按比例缩小仍然会留下大量像素,以在其他设备上实现完整的 @3x 分辨率等等。反正我是这样理解的。我自己也想知道这一点,只发现@1x @2x @3x 对于我没有随着屏幕尺寸增加而放大的东西(例如某些按钮)有用。

【讨论】:

  • 在低分辨率显示器上使用较低的分辨率可以提高渲染性能。
  • 是的,我已经制作了一个应用程序,我在其中制作了所需的最大尺寸,并且在较小的设备上它会缩小它并且不会丢失任何像素。但正如达科所说,我想知道对于更大的应用程序,这是否会使事情变得有点脆弱和缓慢。到目前为止,它似乎还不错,因为我只将它用于几个按钮。但是,您永远不知道随着事情变得越来越复杂,所以我一直在寻找更多的标准做事方式。
猜你喜欢
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多