【问题标题】:How can I add JPEGs to an asset catalog in Xcode?如何将 JPEG 添加到 Xcode 中的资产目录?
【发布时间】:2013-09-18 02:52:12
【问题描述】:

是否可以将 PNG 文件以外的资产添加到 Xcode 资产目录?

当我将 JPEG 文件拖到资产目录中时,UI 不接受它们。

【问题讨论】:

    标签: xcode assets xcode5


    【解决方案1】:

    您可以通过手动编辑资产的 JSON 表示来添加非 PNG 资产。最简单的方法是复制现有资产并对其进行修改:

    1. 右键单击现有资产并选择在 Finder 中显示
    2. 复制并粘贴现有的.imageset 项目并将其重命名,例如my_image.imageset
    3. 双击新的.imageset
    4. 删除文件夹中的所有现有图像
    5. 复制到您的 JPEG 文件中
    6. 编辑Contents.json 文件,将filename 键的值替换为您的JPEG 文件名

    您的Contents.json 将如下所示:

    {
      "images" : [
        {
          "idiom" : "universal",
          "scale" : "1x",
          "filename" : "my_image.jpg"
        },
        {
          "idiom" : "universal",
          "scale" : "2x",
          "filename" : "my_image@2x.jpg"
        }
      ],
      "info" : {
        "version" : 1,
        "author" : "xcode"
      }
    }
    

    请务必按名称引用您的图片,不带扩展名:

    [UIImage imageNamed:@"my_image"]
    

    这种方法适用于 GIF 和其他资产,因为它们只是在构建时被复制到应用程序的主包中。值得注意的是,图像在复制到包时最终会带有 png 扩展名,但它们仍然可以正确加载。

    【讨论】:

    • 生成的图像是 png 是毫无价值的;)也就是说,如果有人愿意减少占用的空间(通过使用 JPEG 而不是 PNG),那么它不适用于 Asset Catalog — 或者我还没找到路:)
    • 我的扩展名为 PNG,但实际上不是 PNG,也不会增加大小。 identify test.png 显示 test.png JPEG 320x838 320x838+0+0 8-bit sRGB 10.4KB 0.000u 0:00.000 我的项目设置中确实将“压缩 PNG 文件”设置为 NO。
    • 是否可以制作 gif 动画? (对不起,我问的是你提到的关于 GIF 的问题)
    • 这听起来像一个丑陋而脆弱的黑客。
    • 似乎它适用于 iOS 8,但不适用于 iOS 7,“渲染为”设置为“原始图像”也无济于事:(
    【解决方案2】:

    从 Xcode 6.1 开始,JPG 图像现在可以添加到资产目录中。添加的步骤是:

    1. 使用与 PNG 相同的命名约定(即heart.jpgheart@2x.jpgheart@3x.jpg)以所需质量导出您的 JPG 文件
    2. 将 JPG 从 Finder 拖到您的资产目录中,并将任何拼接或设备特定设置添加到资产中
    3. 将所有 JPG 的“渲染为”更改为“原始图像”(否则它们将在模拟器和设备上显示为空白)

    【讨论】:

    • 第 3 步将渲染更改为“原始图像”对我有用。在我进行更改之前,图像不会显示在模拟器或设备上。任何寻找该选项的人 - 它在 xcode 中与名称、设备、宽度和高度等一起列出。
    • 导出的 IPA 是否包含 JPG 或 PNG?即使我使用原始图像选项添加 jpg,我也看到它包含 PNG。
    【解决方案3】:

    您现在可以在 Xcode 6.0 Beta 中拖放 JPEG

    【讨论】:

    • 感谢@onbek - 到现在我们还不能包含 jpeg 有点荒谬
    • 遗憾的是,官方 Xcode 6.1 中没有此功能。我无法将 jpg 导入资产,如果我将其强制导入资产,则图像在模拟器中变为空白。
    • @hylnbech 我遇到了同样的问题。尝试将检查器中的“渲染为”更改为“原始图像”。有关更多详细信息,请参阅我的答案
    • 请注意,从 Xcode 7.0 开始,此功能似乎已被破坏。以前在 Xcode 6 中工作的所有具有 .jpg 扩展名的图像现在都不会使用“[UIImage imageNamed:]”加载。
    【解决方案4】:

    在 Xcode 6.x 中,您可以将 jpeg 拖放到资产目录中。如果从资产创建 UIImage,请确保使用 .jpg 扩展名,如下所示:

    [UIImage imageNamed:@"myimage.jpg"];
    

    如果不包含扩展名,图像将显示为白色/空白。

    【讨论】:

    • 它是否仍然为每个设备加载正确的比例图像?
    • 反对的选民愿意提出一些建设性的批评吗?
    【解决方案5】:

    如果您不想更改 Contents.json 文件,也可以将 image.jpg 重命名为 image.png。然后,您可以将图像添加到资产目录,即使在内部它们仍然是 jpeg 文件。您甚至可以使用 Xcode 对它们进行切片。

    编译应用程序时,所有资产都进入 Assets.car 文件。我尚未验证此时它们是否已转换为 png。

    【讨论】:

      【解决方案6】:

      试试这个。 快速导入资源脚本,解决导入速度和重命名问题。 https://github.com/qdvictory/happyxcasset

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-28
        • 2015-01-10
        • 2019-12-26
        • 2014-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多