如何告诉资产目录 (.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,6
和iOS 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) 对多个图像井使用相同的图像?的主要内容,如果未能解决你的问题,请参考以下文章