ios - UIBezierPath - 你可以 "clip"一个吗?

标签 ios uibezierpath

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

enter image description here

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

enter image description here

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

enter image description here

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

iOS 工具包是否包含这种用于 UIBezierPath 构建的功能?

我认为答案是“否”,但这是不可能通过谷歌搜索的事情之一,因为,你会得到不相关的质量检查。所以我找不到答案。

请注意 - 这与简单地“添加一个洞”完全不同,就像人们使用 .append 所做的那样(例如 https://stackoverflow.com/a/57514286/294884 )

最佳答案

没有内置的路径剪辑(并且绝对没有自动关闭剪辑路径)。


除了您提到的“添加孔”技术之外,另一种方法就是遮盖/剪切它。我知道您知道这一点,但为了 future 的读者,内置剪切/ mask 仅在图形上下文(或 CALayermask)中可用。 )。例如,如果您有一个 CAShapeLayer,则可以设置其掩码(例如,设置为下面虚线矩形所示的矩形):

enter image description here

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

但是,如果您的路径由一系列线段组成,理论上您可以编写自己的例程来迭代这些线段,寻找与矩形剪切蒙版的交点(以及检测它们是否包含在剪切蒙版中)根本没有面具)。如果您搜索“UIBezierPath intersection ”,你会看到一些相关的例子。即使如此,您也会遇到关于如何通过算法关闭路径的有趣的边缘情况。

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

相关文章:

iphone - 如何在 -drawRect :? 之外将两个 UIImage 对象组合成一个 UIImage

ios - 如何在 iPhone 上绘制 "speech bubble"?

iphone - 延迟 NSFetchedResultsController 委托(delegate)方法

ios - 如何通过 O365-iOS-Connect 获取/创建日历?

ios - 动画 CALayer

ios - CMVideoFormatDescriptionGetCleanAperture() 快速错误

ios - 如何计算或技巧 UIBezierPath 控制点平滑形状

ios - 为什么没有任何显示?

ios - 在 iOS 中绘图时计算控制点

ios - swift 中的自定义 UIBezierPath(Arc 麻烦)