2013-09-25 117 views
0

我想繪製一個視圖,其中有幾個空心圓。視圖背景顏色將爲黑色,不透明度爲0.5,空心圓圈位於可以看到其下方視圖的位置。這與下面的一段代碼工作正常,但有一個問題,當我的空心圓相交時,我想要將它們都作爲空洞區域覆蓋,但由於偶數規則,這沒有解決。有什麼建議麼? 還是其他選擇?用UIBezierPath填充相交路徑中的顏色

- (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

回答

0

不補圈,夾出中心。

+0

我不是在填充圓圈,而是用偶/奇規則填充UIBezier路徑。把你的圈子剪掉,你的意思是什麼? – Abhinav

+0

創建一個與圓圈內部相匹配的cgpath路徑,將該路徑添加到您的形狀,然後您可以在填充使用eo規則之前剪出該部分。這會給你一個真正的「空心」圈子,而一個圈子有一些東西在中間。你的另一種選擇是,如果你打算爲你的圈子使用純色,你可以在矩形內部打一個橢圓,這會給你相同的效果。 – DoS