2013-09-25 36 views
11

假设我有一个包含100个图像的项目,我已经将其导入到主Images.xcassets文件中的一个文件夹中。然后,我会从我的图形设计人员那里获取这些图像的67个更新 - 是否有将这些图像更新推送到xcassets文件夹的简单方法?Xcode5 xcassets - 如何批量替换图像?

现在,我打开Xcode中的xcassets文件,并且对于每个更改的图像,我都将新图像拖入小的2x或1x框中 - 我必须这样做67次!因为xcassets文件夹中的每个图像都有自己的子文件夹,所以我不能只用Finder(旧的方式)拖放文件。如果我没有为我的图像使用xcassets文件,则可以通过这样做轻松更新文件。但是xcassets应该“让管理资产变得更简单。”

好 - 那么我错过了什么?

+2

我即将开始使用xcassets,但这看起来不太好...... –

+0

我认为这个想法是,现在您将'* .xcassets'文件夹提供给您的设计师。并期望他/她能够在不修改文件夹结构的情况下使用修改的图像返回另一个。否则,您可以使用脚本解决该问题(如果图像名称相同) – nacho4d

回答

3

我不认为你错过了任何东西。资产文件夹根本没有深思熟虑。他们引入了一些好处,但有更多的缺陷。

例如发射图像。您无法通过资源为不同的iOS版本设置相同的视网膜和视网膜4英寸启动图像,而无需Xcode复制文件。我想我们没有其他选择,只能通过bug reporter提交增强请求,并希望...

+0

同意。过去很容易编写一个脚本来调整大小,并将所有2张图像重命名为1x,甚至3x至2x。我们以前总是把最大的尺寸作为'主',并在图像改变时运行脚本。真的很容易管理。 –

0

我已经开始在xcassets文件内的单独文件夹中放置启动图像和应用图标,因为这些图像很少更改。然后,每当我需要重新导入图像或添加新图像时,我会删除现有图像(除了单独的文件夹),并重新导入所有内容(除了我设置的图像外)。它工作干净,不会破坏我的任何代码或故事板。

或者,您可以在查找器中拖放,只需在Finder中打开.xcassets文件夹并将图像放入正确的目录/图像集中。 Xcode正在改变目录结构,和过去类似,如果图像保持相同的文件名,你可以在Finder中覆盖它们,并且Xcode会更新。您不需要在Xcode中弄乱.xcassets文件就可以进行这种简单的更改,尽管将每个图像拖动到适当的图像集中会有点痛苦,而且脚本可以使这方面的工作变得更容易。

4

无需Ruby中,可以运行这个shell脚本找到在起源文件夹文件(其中更新后的图像),发现在你目的地文件夹(.xcassets文件夹同名的文件)并用更新后的版本覆盖它们。很棒!

find ORIGIN FOLDER PATH NAME -name '*.png' | while read f; do f2=$(find DESTINATION  FOLDER PATH -name "${f##*/}"); [[ $f2 ]] && cp "$f" "$f2"; done 
+0

这很好用! –