假设您已经建立了一个UIBez:

ios - UIBezierPath-您可以“剪切”一个吗?-LMLPHP

现在,我想“剪切”它,也许用这个矩形:

ios - UIBezierPath-您可以“剪切”一个吗?-LMLPHP

因此,在示例中,我想要的最终路径是:

ios - UIBezierPath-您可以“剪切”一个吗?-LMLPHP

(或者在示例中,您可以在右侧“减去”一个矩形,在底部“减去”一个矩形。)

iOS工具包是否包括用于UIBezierPath构建的功能?

我认为答案是“否”,但这是Google不可能做到的事情之一,因为您获得了不相关的质量检查。所以我找不到答案。

请注意-这与使用.append(这是https://stackoverflow.com/a/57514286/294884的示例)在普通情况下所做的“添加一个洞”完全不同。

最佳答案

没有内置的路径剪切(也绝对没有自动关闭剪切路径)。

除了您提到的“添加孔”技术外,另一种方法是将其蒙版/剪切。而且我知道您知道这一点,但是为了将来的读者,内置的剪切/遮罩仅在图形上下文(或maskCALayer)内可用。例如,如果您具有CAShapeLayer,则可以设置其mask(例如,设置为下面的虚线矩形所示的rect):

ios - UIBezierPath-您可以“剪切”一个吗?-LMLPHP

显然,这种方法无法“关闭”已剪切的路径。

但是,如果路径由一系列线段组成,则理论上您可以编写自己的例程来遍历这些线段,以查找与矩形剪贴蒙版的交集(以及检测它们是否完全包含在剪贴蒙版中) )。如果搜索“UIBezierPath intersection”,将看到一些相关示例。即使如此,您也会遇到一些有趣的极端情况,例如如何算法上封闭路径。

关于ios - UIBezierPath-您可以“剪切”一个吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58148691/

10-10 20:52