我正在寻找最好的SVG到NSBezierPath解析器,如果类/库只需要一串SVG命令,这是可以的,这里是一个例子:
M 435.722 403.542 h -232.44 v -293 h 232.44 c 0 0 0 35.108 0 81.019 c 0.049 2.551 0.079 5.135 0.154 7.748 c -0.208 15.567 12.1 13.618 19.624 28.192 c 2.584 5.005 5.875 30.5 4.875 34.5 c -7 19 -28.707 22.875 -24.653 44.854 c 0 2.667 0 5.31 0 7.923 C 435.722 364.425 435.722 403.542 435.722 403.542 z
类/库不必解析. SVG文件本身,但它应该能够处理所有SVG命令并支持相对坐标和绝对坐标(换句话说,它应该与此处找到的SVG 1.1规范完全兼容)。
我在网上找到了一些类,但它们都是有限的,并且在上面的svg命令中失败了。哪一个是最好的SVG到NSBezierPath解析器?
编写程序,使用XML解析器解析SVG文件。
这将给你一个路径数组,你可以把它一个一个地输入到下面的代码中:
https://www.touchnoc.com/one_way_ticket_from_svg_to_nsbezierpath**请务必在上面的页面中查找iOS的代码。
但是,上面的代码只适用于绝对路径坐标,不适用于相对路径坐标。Adobe Illustrator只输出相对路径坐标。您可以在sketch (http://www.bohemiancoding.com/sketch/)程序中从illustrator中打开svg,并导出svg将为您提供绝对路径坐标的文件。
你的路径失败可能是因为他们使用相对坐标-小c,其中大多数脚本我发现可以转换绝对,或大c。
就这样了。整个过程并不容易,但却是可行的!这是我的经验之谈。
我不认为这样的东西是可用的。
但是您应该能够自己很容易地解析它,因为这些命令直接映射到NSBezierPath
方法。
命令出现在前面也很有帮助,因此您可以执行以下操作:
- 被空格分隔成数组
- 获取第一个元素并映射到命令
- 将下一个
x
元素作为参数(x
根据命令已知) - 在
NSBezierPath
上调用匹配方法
如果字符串很长,也可以按流解析。