QuartzCore:绘制一个有洞的形状?

时间:2012-06-06 20:58:31

标签: objective-c cgpath quartz-core

如何使用QuartzCore绘制一个带孔的形状?

这是一个例子: enter image description here

我已经明白了如何绘制路径:

CGMutablePathRef maskPath = CGPathCreateMutable();
CGPathMoveToPoint(maskPath, NULL, x1, y1);
CGPathAddLineToPoint(maskPath, NULL, x2, y2);
CGPathAddLineToPoint(maskPath, NULL, x3, y3);
CGPathCloseSubpath(maskPath);

并将其应用于UIView:

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = viewToMask.bounds;
maskLayer.path = maskPath;
viewToMask.layer.mask = maskLayer;

但我不完全确定如何在中心创建一个有洞的路径。 我可能需要以某种方式从路径中减去吗?

1 个答案:

答案 0 :(得分:3)

由于您将CGPath设置为CAShapeLayer的路径属性作为掩码,因此您应该查看Crop a CAShapeLayer retrieving the external path its answer