我是iOS开发的新手。我有两条椭圆形的贝塞尔曲线。
UIBezierPath *bpath1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, 40, 40)];
UIBezierPath *bpath2 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x + 10, y + 10, 20, 20)];
我想在这些与椭圆形之间填充颜色。为了在较小的椭圆形中获得白色,我尝试了这个
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
UIBezierPath *bpath1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, 40, 40)];
UIBezierPath *bpath2 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x + 10, y + 10, 20, 20)];
UIColor *fillColor1 = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.5];
UIColor *fillColor2 = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
CGContextSetStrokeColorWithColor(context,[UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 1.2);
CGContextAddPath(context, bpath1.CGPath);
[fillColor1 setFill];
[bpath1 fill];
CGContextAddPath(context, bpath2.CGPath);
[fillColor2 setFill];
[bpath2 fill];
CGContextStrokePath(context);
}
但是外圈的颜色填充在内圈中。有没有办法只填补这两个椭圆之间的路径?
答案 0 :(得分:0)
如果您只是尝试用白色填充较小的椭圆,请将fillColor2代码更改为:
UIColor *fillColor2 = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
或者这个:
UIColor *fillColor2 = [UIColor whiteColor];
较小的圆圈显示为黑色,因为填充红色,绿色和蓝色值为0会导致黑色。