如何使用Sketch插件导出干净的SVG而不使用掩码或覆盖。草图49.3

时间:2018-05-08 18:16:28

标签: svg sketchapp

当我将MSSymbolInstances导出为SVG时,我总是在SVG代码中得到这一行。

<g id="????/Fill/Gray-3" mask="url(#mask-2)" fill="#6A6A78">

直到我手动编辑上面的填充并将“#1D1F20”更改为“none”,我才能在程序中使用SVG。有没有办法在没有这个特殊填充或掩码的情况下导出SVG。

我尝试了几种方法: -

  1. 遍历所有图层,如果它是mssymbolinstance,则使用新的草图API sketch.export(图层,选项)导出..这不起作用。

  2. 试图复制一个图层将其转换为一个组然后使用group.export,如下所示:

    var duplicates = layers [j] .duplicate(); var group = duplicates.detachByReplacingWithGroup(); group = new sketch.Group(group); group.export({ “格式”:“svg”, 输出:outputPath, //'use-id-for-name':是的, }); group.remove();

  3. 这也不起作用,因为输出SVG都具有带有一些填充颜色覆盖的掩码。

    1. 这种方法与2相同。这里我只是在将图层转换为组并导出之前不复制图层,但是这有其他的缺点。 - &GT;首先,它删除了符号实例,因此更改了草图文档。 - &GT;其次,我必须多次运行它并经常抛出有关的错误 - [NSNull name]:无法识别的选择器发送到实例0x7fffa6e3ecc0
    2. 请帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用我制作的名为svgood的npm软件包。它将删除 defs g (它们倾向于包含 mask s)元素,并将 path 元素浮动到 svg 的顶层。我有一些计划使其更有用,但请告知我是否可以添加一些使其更适合您的用例的东西。