假设您拥有已构建的UIBez:
现在,我想“剪切”它,也许用这个矩形:
因此在示例中,我想要的最终路径将是:
(或者在示例中,您可以在右侧“减去”一个矩形,在底部一个“减去”一个矩形。)
iOS工具包是否包括用于UIBezierPath构建的功能?
我认为答案是“否”,但这是Google不可能做到的事情之一,因为您获得了不相关的质量检查。所以我找不到答案。
请注意-这与简单地“添加一个孔”完全不同,就像使用.append
(该https://stackoverflow.com/a/57514286/294884的示例)一样常见”
没有内置的路径剪切(也绝对没有自动关闭剪切路径)。
除了您提到的“添加孔”技术外,另一种方法是对其进行遮罩/剪切。而且我知道您知道这一点,但是为了将来的读者,内置的剪切/遮罩仅在图形上下文(或mask
的CALayer
)内可用。例如,如果您有一个CAShapeLayer
,则可以设置其mask
(例如,设置为下面的虚线矩形所示的矩形):
显然,这种方法无法“关闭”已剪切的路径。
但是,如果您的路径由一系列线段组成,则理论上您可以编写自己的例程来遍历这些线段,以查找与矩形剪贴蒙版的交集(以及检测剪贴蒙版是否包含它们)完全没有)。如果搜索“ UIBezierPath intersection”,将看到一些相关示例。即使如此,您也会遇到一些有趣的极端情况,例如如何以算法方式关闭路径。