假设您已经构建了一个 UIBez:
现在我想“剪辑”它,也许用这个矩形:
因此在示例中我想要的最终路径是:
(或者,在示例中,您可以“减去”右侧的一个矩形和底部的一个矩形。)
iOS 工具包是否包含这种用于 UIBezierPath 构建的功能?
我认为答案是“否”,但这是不可能通过谷歌搜索的事情之一,因为,你会得到不相关的质量检查。所以我找不到答案。
请注意 - 这与简单地“添加一个洞”完全不同,就像人们使用 .append
所做的那样(例如 https://stackoverflow.com/a/57514286/294884 )
最佳答案
没有内置的路径剪辑(并且绝对没有自动关闭剪辑路径)。
除了您提到的“添加孔”技术之外,另一种方法就是遮盖/剪切它。我知道您知道这一点,但为了 future 的读者,内置剪切/ mask 仅在图形上下文(或 CALayer
的 mask
)中可用。 )。例如,如果您有一个 CAShapeLayer,则可以设置其掩码(例如,设置为下面虚线矩形所示的矩形):
显然,这种方法无法“关闭”已被剪切的路径。
但是,如果您的路径由一系列线段组成,理论上您可以编写自己的例程来迭代这些线段,寻找与矩形剪切蒙版的交点(以及检测它们是否包含在剪切蒙版中)根本没有面具)。如果您搜索“UIBezierPath intersection ”,你会看到一些相关的例子。即使如此,您也会遇到关于如何通过算法关闭路径的有趣的边缘情况。
关于ios - UIBezierPath - 你可以 "clip"一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58148691/