使用UIBezierPath填充相交路径中的颜色

时间:2013-09-25 03:32:45

标签: ios objective-c cocoa-touch uiview uibezierpath

我正在尝试绘制一个空心圆圈的视图。视图背景颜色为黑色,不透明度为0.5,空心圆圈位于我可以看到其下方视图的位置。这下面的代码工作得很好但是当我的空心圆相交时有一个问题,我想把它们都覆盖为空心区域,但由于甚至奇怪的规则,这也没有用。有什么建议? 或任何其他选择?

- (void)addShadowView {
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height) cornerRadius:0];

    for (NSValue *point in self.hollowFrames) {
        UIBezierPath *circlePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(point.CGPointValue.x - self.hollowCircleRadius.floatValue, point.CGPointValue.y - self.hollowCircleRadius.floatValue, 2.0 * self.hollowCircleRadius.floatValue, 2.0 * self.hollowCircleRadius.floatValue) cornerRadius:self.hollowCircleRadius.floatValue];

        [path appendPath:circlePath];
    }

    [path setUsesEvenOddFillRule:YES];

    CAShapeLayer *fillLayer = [CAShapeLayer layer];
    fillLayer.path = path.CGPath;
    fillLayer.fillRule = kCAFillRuleEvenOdd;
    fillLayer.fillColor = [UIColor blackColor].CGColor;
    fillLayer.opacity = 0.5;
    [self.layer addSublayer:fillLayer];
}

这就是它现在的样子。我希望相交的区域也是空心的,而不是用fillColor填充。

enter image description here

1 个答案:

答案 0 :(得分:0)

不要填充圆圈,剪掉中心。