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

问题描述 投票:0回答:1

假设您拥有已构建的UIBez:

enter image description here

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

enter image description here

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

enter image description here

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

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

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

请注意-这与简单地“添加一个孔”完全不同,就像使用.append(该https://stackoverflow.com/a/57514286/294884的示例)一样常见”

ios uibezierpath
1个回答
0
投票

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


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

enter image description here

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

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

© www.soinside.com 2019 - 2024. All rights reserved.