我正在尝试为Iconoir, located here编写一个Swift包。我已经编写了一个bash脚本,可以将所有SVG下载到本地文件夹。
for svg_url in ${icon_list}; do
icon_file=$(basename "${svg_url}")
icon_name="${icon_file%.*}"
local_icon_path="${ASSETS_DIR}/${icon_name}.imageset"
if [[ ! -f "${local_icon_path}/${icon_name}.pdf" ]]; then
mkdir -p "${local_icon_path}"
# Download the SVG file
curl -sL -o "${local_icon_path}/${icon_file}" "https://raw.githubusercontent.com/iconoir-icons/iconoir/${svg_url}"
这确实像预期的那样工作。我注意到的是,所有的.svg
文件,虽然它们是有效的,可以在任何SVG查看器中打开,但在Xcode中不受支持。我可以使用相同的脚本将它们添加到.imageset
中,它们在Xcode中显示为有效,但是是不可见的。SVG
和Contents.json
都在同一个目录中,它完全匹配,就像你手动添加了一个文件到项目w/ references一样。
# Create JSON file for the icon in Assets.xcassets
json_file="${local_icon_path}/Contents.json"
cat <<-JSON > "${json_file}"
{
"images" : [
{
"filename" : "${icon_name}.pdf",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
JSON
我已经尝试手动下载图像并手动添加它们,为了保持理智,即使这样做,它仍然不显示。我已经玩弄了设置Scales
和其他图像设置选项,但似乎没有任何工作。我最后的尝试是使用cairosvg
将它们转换为PDF,认为可以修复它,但我似乎无法让这种依赖性在我的机器上工作,尽管我尽了最大的努力。
# Convert the SVG file to a PDF file
/usr/bin/python3 /usr/local/bin/cairosvg "${local_icon_path}/${icon_file}" -o "${local_icon_path}/${icon_name}.pdf"
Cairo在寻找期望的依赖库时抛出了各种错误,最终我放弃了它。简而言之,我想自动下载这些SVG,并将它们添加到我的Xcode项目中的Media.xcassets
文件夹中。SVG的格式不正确,我不知道为什么。需要什么格式,以及有没有一种方法可以修改每个SVG以确认它是否有效。在将其添加到项目之前?
Click Here for Script GIST
1条答案
按热度按时间lvjbypge1#
原来
Iconoir.com
中的图标在其主<svg></svg?
标记上缺少以下属性。原始值
修正值
Xcode将无法识别没有笔画宽度和笔画颜色的SVG。最初的
currentColor
旨在使其与Iconoir的Web部分动态化,而不是iOS版本。