我有一个名为ShapeView
的类,它是UIImageView
的子类。在这个类中,有一个名为shape
的CALayer
属性,我使用它来定义各种类型的复杂形状。使用UIGraphicsBeginImageContextWithOptions
,ShapeView将shape
转换为UIImage
,然后将其设置为UIImageView's
图像属性。
使用此设置,我想合并两个形状,彼此相交如下:
如您所见,我正在设置每个CAShapeLayer
的stroke属性,以便每个形状都有一个黑色边框。我想让它这样,如果两个形状彼此相交,我可以检测到另一个形状内部的笔划部分,并将这些像素的颜色更改为UIClearColor
,以便给人的印象是两个形状正在合并。
我有点困惑,但如何检测是否某个区域的CAShapeLayer
,已转换为UIImage
,是在另一个CAShapeLayer
也已转换为UIImage
。以及如何将这些精确像素的颜色更改为UIClearColor
(这甚至可能吗?)).
谢谢!
1条答案
按热度按时间u5i3ibmn1#
我真的不明白你想用这些照片做什么...但是让我们看看Path选项(而不是从每个路径/形状生成
UIImage
)。如果你的目标是
iOS 16.0+
,我们可以利用CGPathCreateCopyByUnioningPath
(对于以前的iOS版本,你可以在那里找到一些Bezier路径库)。查看空房情况
假设我们用这些 separated rect创建两个矩形路径:
如果我们将这些路径添加到可变路径:
我们得到这个:
现在让我们改变矩形,使它们重叠:
我们得到这个结果:
由于您的目标是“删除重叠的行”,我们可以使用
CGPathCreateCopyByUnioningPath
...与上述相同的重叠语句:现在我们得到这个作为输出:
我在这里发布了一个示例项目:https://github.com/DonMag/CGPathUnion