Xcode和Swift支持需要哪些SVG标签?

xlpyo6sf  于 2023-04-22  发布在  Swift
关注(0)|答案(1)|浏览(148)

我正在尝试为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中显示为有效,但是是不可见的。SVGContents.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

lvjbypge

lvjbypge1#

原来Iconoir.com中的图标在其主<svg></svg?标记上缺少以下属性。

原始值
stroke="currentColor"
修正值
stroke="#000000" stroke-width="1"

Xcode将无法识别没有笔画宽度和笔画颜色的SVG。最初的currentColor旨在使其与Iconoir的Web部分动态化,而不是iOS版本。

相关问题