【发布时间】:2018-12-15 06:46:34
【问题描述】:
假设我们有两个 UIBezierPaths,path1 和 path2...(已经在运行时相对于视图边界进行了定义,并且已经作为同一视图的属性存在)。
我们要得到一个UIBezierPath类型的新路径,path3,也就是path1减去path2的结果:
这样做的方式(如here所见)是这样做的:
path1.append(path2.reversing())
但是,这似乎只适用于 path1 完全包含 path2 的情况。
例如,考虑只有部分交叉点的情况——路径 1 不完全包含路径 2。如果我们应用与上面相同的方法会发生这种情况:
在 Android 中,答案是:
path1.op(path2, Path.Op.DIFFERENCE);
那么……在IOS有没有等价的简单操作?
如果没有,是否有一个函数可以写成:
func returnPath2CutOutOfPath1(path1: UIBezierPath, path2: UiBezierPath) -> UIBezierPath {
// the mystery lies within these here parts. :)
}
【问题讨论】:
-
请贴出你试过的代码。
-
是否足以填补差异,还是出于其他原因需要生成的 UIBezierPath?
-
理想情况下,就好像第二条路径实际上是从第一条路径中删除的......那样,应用轮廓、背景和轮廓宽度等的正常做法仍然可以正确应用到结果路径。
-
我在发布这篇文章之前读到了这一点……事实上,我从那里学到了我找到的最佳解决方案:“path1.append(path2.reversing())”
标签: ios swift vector drawing uibezierpath