【问题标题】:Create images for iphone and ipad, 4 images?为 iphone 和 ipad 创建图像,4 张图像?
【发布时间】:2013-07-02 15:17:57
【问题描述】:

当我为 iPhone、iPhone 视网膜、iPad、iPad 视网膜的 ImageView 创建图像时,我应该创建 4 个图像吗?

例如对于我使用的硬币图像 ->

  1. coin.png
  2. coin@2x.png
  3. coinIpad.png
  4. coinIpad@2x.png

我可以只创建最大尺寸的图像 (imageIpad@2x.png) 并在 Xcode 中选择 Aspect Fit 吗?

[UIImage imageNamed:@"imageIpad@2x.png"];

执行此操作的常用方法是什么?

【问题讨论】:

  • 您只是引用了非 2x 版本。当它检测到视网膜显示时,它会自动使用@2x。
  • 我知道,但问题不是那个。我想知道是否可以通过 Interface Builder 创建最大尺寸并调整其大小。

标签: iphone ios


【解决方案1】:

按照您的要求回答您的问题:是的,您可以只使用最高分辨率的图像,并使其适合每个设备当前需要的尺寸。您可以按照您的建议,使用命名资源初始化UIImage,然后将其分配给UIImageView,并在每种设备类型中使用适当的框架。

我会建议这样做吗?不!

为什么?

  1. 命名约定(~ipad 和@2x)使您作为程序员可以轻松地为每种分辨率提供完美匹配的图稿。
  2. 您或您的设计师可以完全控制艺术品的展示方式
  3. 它可以节省内存和 CPU,因此甚至可以节省一点电池电量。
  4. 当涉及到无法很好调整的非常详细或较小的图形时,您可以考虑为更适合当前分辨率的较低分辨率创建稍微不同的图形

因此,如果您只是想缩小高分辨率图像的大小,请下载功能强大但便宜的东西,例如 gimp 并自己调整一次(而不是让成千上万的手机一次又一次地这样做),用流行的名称保存它们并包括他们在边界。

【讨论】:

    【解决方案2】:

    只创建一个图像并依靠设备调整它的大小是:

    1. 效率低下 - 您将在运行时使用大量本应忙于处理其他事情的资源
    2. 不是预期的方式 - 您应该创建 2 个图像(视网膜和非视网膜)。如果您希望在 iPad 上使用另一组图像,您应该在运行时检查您在哪个设备上运行:

    [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad

    或将您的项目拆分为 2 个单独的目标,并将 2 组图像分别添加到它们的正确目标。

    【讨论】:

    • 因此,对于当前示例,对于每个图像,如果我想支持 iPhone 和 Retina 显示器,我必须创建 4 个不同尺寸的相同图像版本。不是吗?
    • iPhone 和视网膜?我认为您对可用的屏幕和设备感到困惑。 iPhone 也可以是视网膜,iPad 也可以是视网膜
    【解决方案3】:

    你需要做的就是在你想打电话的时候投入硬币。

    例如:

    [UIImage imageNamed:@"coin"];
    

    但是当把图片放在资源文件夹中时,将它命名为coin@2x.png对于视网膜图片和coin~ipad.png对于ipad图片。

    Xcode 会相应地调用适当的图像。

    【讨论】:

    • 实际上,使用uiimage,您甚至不需要.png 部分。
    • 那么,文件的名称将是:coin.png、coin@2x.png、coin~ipad.png 和 coin~ipad@2x.png?我不确定最后一个,也许是 coin@2x~ipad?
    【解决方案4】:

    如果您只想拥有可以创建一次并在不同情况下使用的可调整大小的资产 - 请查看这个UIImage+PDF 类别,它可以帮助您使用 PDF,它作为矢量格式可以缩放到任何大小,无需质量损失。

    最近添加了缓存,应该也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多