从路径中减去多个重叠路径

Subtract Multiple Overlapping Paths from Path

我有3条路。我想要从 path3 中减去其中的两条路径,path1 和 path2。我不想填充 path1 和 path2 之间重叠的区域。这是我制作的图表来解释我的意思:

我已经尝试了 this 问题,但接受的答案产生了上面在 "Result With EOClip." 中找到的内容我尝试了 CGContextSetBlendMode(ctx, kCGBlendModeClear),但它所做的只是使填充变黑。有什么想法吗?

玩了一下 PaintCode () 我着陆了。也许它适合你的情况?

let context = UIGraphicsGetCurrentContext()
CGContextBeginTransparencyLayer(context, nil)

let path3Path = UIBezierPath(rect: CGRectMake(0, 0, 40, 40))
UIColor.blueColor().setFill()
path3Path.fill()

CGContextSetBlendMode(context, kCGBlendModeDestinationOut)
let path2Path = UIBezierPath(rect: CGRectMake(5, 5, 20, 20))
path2Path.fill()
let path1Path = UIBezierPath(rect: CGRectMake(15, 15, 20, 20))
path1Path.fill()

CGContextEndTransparencyLayer(context)