假设我有一个包含100个图像的项目,我已将其导入到Images.xcassets主文件中的文件夹中。然后我从我的图形设计师那里获得67张图像的更新 - 是否有一种简单的方法可以将这些图像更新推送到xcassets文件夹中?
目前,我正在Xcode中打开xcassets文件,对于每个已更改的图像,我将新图像拖动到小2x或1x框中 - 我必须这样做67次!我不能只是在Finder(旧方式)中拖放文件,因为xcassets文件夹中的每个图像都有自己的子文件夹。如果我不为我的图像使用xcassets文件,我可以通过这样做轻松更新文件。但是,xcassets应该“使您的资产管理变得更加简单”。
很好 - 所以我错过了什么?
答案 0 :(得分:4)
不需要Ruby,您可以运行此shell脚本来查找 origin 文件夹中的文件(更新后的图像所在的文件夹),在目的地中查找具有相同名称的文件文件夹(.xcassets文件夹)并使用更新后的版本覆盖它们。效果很好!
find ORIGIN FOLDER PATH NAME -name '*.png' | while read f; do f2=$(find DESTINATION FOLDER PATH -name "${f##*/}"); [[ $f2 ]] && cp "$f" "$f2"; done
答案 1 :(得分:3)
我认为你没有遗漏任何东西。资产文件夹根本没有经过深思熟虑。它们带来了一些好处,但存在更多缺陷。
以发布图片为例。您不能通过没有Xcode复制文件的资产为不同的iOS版本设置相同的视网膜和视网膜4英寸启动图像。我想我们别无选择,只能通过bug reporter提交增强请求,希望......
答案 2 :(得分:1)
我写了一个ruby脚本来自动完成这项任务。 请点击以下链接。 https://gist.github.com/shirishgone/8036382
答案 3 :(得分:0)
我已开始在我的xcassets文件中的单独文件夹中放置启动图像和应用图标等图像,因为这些图像很少更改。然后,每当我需要重新导入图像或添加新图像时,我会删除现有图像(除了单独的文件夹),并重新导入所有内容(除了我预留的图像)。它干净利落,不会破坏我的任何代码或故事板。
或者,您可以拖放查找程序,只需在Finder中打开.xcassets文件夹并将图像放在正确的目录/图像集中。 Xcode正在改变目录结构,与过去类似,如果图像保持相同的文件名,您可以在Finder中覆盖它们,Xcode将更新。你不需要乱用Xcode中的.xcassets文件来进行这样的简单更改,尽管将每个图像拖动到适当的图像集有点麻烦,脚本可以使这个区域的内容变得更容易
答案 4 :(得分:0)
我找不到快捷方式,所以我自己写了一篇。基于python。请享用。 https://github.com/qdvictory/happyxcasset