如何告诉资产目录 (.xcassets) 对多个图像井使用相同的图像?

Posted

技术标签:

【中文标题】如何告诉资产目录 (.xcassets) 对多个图像井使用相同的图像?【英文标题】:How can I tell Asset Catalog (.xcassets) to use the Same Image for Multiple Image Wells? 【发布时间】:2013-10-04 09:53:09 【问题描述】:

我们有几个 Xcode 应用项目,我们正在升级所有项目以使用最新的 Xcode 5 功能,包括资产目录 (.xcassets)。

我们所有的default(启动)图像已经包含状态栏的间距,我们希望将这些图像用于ios 5,6iOS 7 启动图像。此外,我们希望在项目中包含同一图像的多个副本。

我们的一个项目已正确设置为对这两个图像井组使用相同的图像。然而,这是偶然设置的。

除了直接编辑 Contents.json 文件(如果需要,这是最后的解决方法),我们如何使用资产目录的 Xcode GUI 编辑器来做到这一点?

我们已经尝试过的

1) 将图像拖放到不同的位置...只需将图像移动到另一组

2) 将同一文件从 Finder 拖放到资产目录...创建图像的新副本

3) 按下option (alt) 拖放图像...创建图像的新副本

【问题讨论】:

您是否尝试在按下选项 (ALT) 的情况下从一个位置拖放到另一个位置? @MarceloFabri,我想是的,但我会再试一次...... @MarceloFabri,不,只是将图像复制到另一组......所以你会得到多个图像(即第二个名为“Default@2x-1.png”的图像) 另一个非常常见的用例:使用相同的图像作为启动图像 + 背景作为您的“主页”视图 好吧,你可以只检查iOS 6.0 and Prior选项,启动图像将用于所有系统(5,6,7) 【参考方案1】:

您可以右键单击 .xcassets 文件并选择“在 Finder 中显示”。转到“Image.launchimage”文件夹并在文本编辑器中打开 Contents.json 文件。在这里您可以看到未分配的插槽不包含“文件名”。您可以手动添加它。例如更改以下内容:


    "orientation" : "landscape",
    "idiom" : "ipad",
    "extent" : "full-screen",
    "minimum-system-version" : "7.0",
    "scale" : "2x"

进入:


    "orientation" : "landscape",
    "idiom" : "ipad",
    "extent" : "full-screen",
    "minimum-system-version" : "7.0",
    "filename" : "Default-Landscape@2x~ipad.png",
    "scale" : "2x"

现在保存文件,瞧!

【讨论】:

是的,问题提示中提到了这一点。希望能够完全从 Xcode GUI 编辑器中完成。 这不会影响构建的大小,因为构建产品包含启动图像的所有副本,并相应命名【参考方案2】:

我通过使用构建脚本为每个目标复制正确的 xcassets 文件解决了这个问题。详情here

【讨论】:

【参考方案3】:

我想我找到了解决方案:只需将要用于 iOS 6 和 7 的默认图像拖到 iOS 6 存储桶中即可。您会收到一条警告,提示您没有仅适用于 iOS7 的映像,但该构建可在 iOS7 模拟器、iOS7 iPhone 和 iOS7 iPad 中运行。

【讨论】:

【参考方案4】:

我通过删除旧的 xcasset 并使用不使用应用程序目录添加新的 xcasset 解决了这个问题

【讨论】:

【参考方案5】:

就我而言,我使用的是可可豆荚。可可豆荚脚本Pods-resources.sh 不知何故导致了这个问题。从脚本中删除资产部分解决了这个问题。

确保清理您的项目并删除派生数据文件夹。

要删除的部分可以在这里找到:

https://***.com/a/21309102/832111

【讨论】:

【参考方案6】:

我升级到 cocopods 0.37,问题就解决了。如果你用的是 cocopods 那可能是它的错。

【讨论】:

以上是关于如何告诉资产目录 (.xcassets) 对多个图像井使用相同的图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Xcassets 获取 iOS 版本的特定资产

无法访问资产目录中的图像

在运行时定义资产目录

以编程方式从10.11中的资产目录中获取颜色?

从 XCAsset 目录中获取数据

如何在资产目录中设置可访问性标签? Xcode 11