Ios7 CGPathAddEllipseInRect始终为最后一种颜色

Ios7 CGPathAddEllipseInRect始终为最后一种颜色,ios7,core-graphics,Ios7,Core Graphics,iOS 7。为什么CGContextSetRGBStrokeColor值不同时两个圆圈都是绿色的。我看到最后一种颜色设置为两条路径。。。为什么会这样?如何为每条路径添加不同的颜色 - (void)drawRect:(CGRect)rect{ CGContextRef ctx = UIGraphicsGetCurrentContext(); CGMutablePathRef centerCirlce = CGPathCreateMutable(); //circle 1 CGContextBe

iOS 7。为什么CGContextSetRGBStrokeColor值不同时两个圆圈都是绿色的。我看到最后一种颜色设置为两条路径。。。为什么会这样?如何为每条路径添加不同的颜色

- (void)drawRect:(CGRect)rect{

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGMutablePathRef centerCirlce = CGPathCreateMutable();

//circle 1
CGContextBeginPath(ctx);
CGContextSetRGBStrokeColor(ctx, 1, 0.56f, 0.19f, 1);
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGPathAddEllipseInRect(centerCirlce, NULL,CGRectMake(100, 100, 10, 10));
CGContextAddPath(ctx, centerCirlce);
CGContextClosePath(ctx);
CGContextStrokePath(ctx);

//circle 1
CGContextBeginPath(ctx);
CGContextSetRGBStrokeColor(ctx, 0.36f, 0.74f, 0.32f, 1);
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGPathAddEllipseInRect(centerCirlce, NULL,CGRectMake(200, 200, 10, 10));
CGContextAddPath(ctx, centerCirlce);
CGContextClosePath(ctx);
CGContextStrokePath(ctx);
}

谢谢你简化了你的代码,现在我知道问题出在哪里了

绘制第一个圆时,将创建一个新路径并将椭圆添加到该路径。然后,使用颜色配置上下文,将路径添加到上下文,并添加在上下文中使用它的上下文路径

此时,您已经绘制了一个圆,上下文的状态为旧颜色,但没有路径但是,中心圆路径中仍然包含旧的椭圆


然后,通过向圆心路径(此时包含两个椭圆)添加新椭圆来绘制第二个圆。然后,与前面一样,在上下文上配置新颜色,添加中心圆路径(包含两个椭圆)并在上下文路径上绘制笔划(这意味着旧的和新的圆都将在旧颜色的基础上使用新颜色绘制笔划)

对不起,那代码很难读懂。您能否简化代码以删除与不同颜色问题无关的所有内容?我能看到的唯一一件事是你的颜色是硬编码的,你确定你不仅仅是在另一件上面画一件东西吗?简化的,经过测试的。两个绿色圆圈。但绿色只是最后一个圆圈的颜色。为什么两者都有相同的颜色?一条路径=一种颜色。许多路径=许多颜色!I.R.狒狒…:)非常感谢您的帮助,尤其是为我自己找到解决方案提供了线索!