【问题标题】:UIBezierPath subpaths which forms closed path cannot be represented in SVG形成闭合路径的 UIBezierPath 子路径无法在 SVG 中表示
【发布时间】:2015-06-15 01:44:43
【问题描述】:

我需要将 UIBezierPath 转换为 SVG。 我的 UIBezierPath 内部有收集三次贝塞尔路径作为子路径。 这些子路径合在一起形成了一条闭合路径,也就是说,最后一个三次贝塞尔曲线的端点与第一个三次贝塞尔曲线的起点相同。

当我用一些填充颜色在 CAShapeLayer 上绘制这条路径时,整个路径会正确填充给定颜色。

现在,我需要在 SVG 中模拟相同的行为(在 webview 中加载),问题是子路径在 svg 中是独立的,我无法将它们组合(组合)成一个路径,所以我们丢失了该路径集合已关闭并因此无法填充的上下文信息。

我试图将这些 svg 立方贝泽路径放在 g 元素中,但也没有用。如下所示

<g>
<path  d="M1013.3,1228.7 C1007.1,1238.4 991.4,1242.6 984.2,1242.6" />
<path  d="M984.2,1233.6 C995.1,1237.3 1008.3,1231.7 1013.2,1231.7" />
<path  d="M1013.2,1221.3 C1018.0,1210.9 1013.8,1197.1 1004.0,1197.1" />
</g>

我该如何解决这个问题?任何意见表示赞赏。

谢谢,

【问题讨论】:

  • 你不能只创建一个将所有 d 属性的内容连接在一起的路径吗?
  • 是的,我在发布问题后发现我们可以将子路径连接到主路径,谢谢!

标签: ios svg uiwebview uibezierpath


【解决方案1】:

我不确定是否理解,但您可以在同一条曲线中使用任意多的贝塞尔路径。这里有一个方法:http://jsfiddle.net/74os2um3/

只需将其放入一个&lt;path&gt; 并添加一个Z 即可关闭它。

<path  d="M1013.3,1228.7 C1007.1,1238.4 991.4,1242.6 984.2,1242.6 L984.2,1233.6 C995.1,1237.3 1008.3,1231.7 1013.2,1231.7 L1013.2,1221.3 C1018.0,1210.9 1013.8,1197.1 1004.0,1197.1 Z" />

【讨论】:

  • 是的,我们可以做到!我的错,我应该更多地考虑路径细节。感谢您提供详细信息。
猜你喜欢
  • 2013-06-16
  • 2013-11-12
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2019-01-08
  • 2012-02-10
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多