尝试绘制分为动态提供的扇区数的圆圈。最后,我的圈子应该像馅饼。
我创建了一个包含多个Pies的圆圈。 Circle有方法- (void)draw
,可在[pie draw];
循环中调用for (Pie *pie in self.pies)
。
派的实现如下:
- (void)draw {
CGContextRef context = UIGraphicsGetCurrentContext();
float startAngleRads = degreesToRadians(_startAngle);
float endAngleRads = degreesToRadians(_endAngle);
CGContextBeginPath(context);
CGContextSetLineWidth(context, 1.0f);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGColorRef strokeColor = [_strokeColor CGColor];
CGContextSetStrokeColorWithColor(context, strokeColor);
CGColorRef fillColor = [_bgColor CGColor];
CGContextSetFillColorWithColor(context, fillColor);
CGContextMoveToPoint(context, _x, _y);
CGContextAddArc(context, _x, _y, _r, startAngleRads, endAngleRads, YES);
CGContextDrawPath(context, kCGPathStroke);
CGContextFlush(context);
}
这会画出很好的圆圈,当然没有任何填充。当我将最后一行更改为CGContextDrawPath(context, kCGPathStrokeFill);
时,我的笔划线消失,只有最后一行(最后一个扇区)停留在屏幕上,圆圈的其他部分用bgcolor填充,不再显示笔划。
问题是:我如何绘制完全分离的“扇区”(每个扇区应该看起来像Arc和Stroke和Fill的三角形)。我需要这个,因为我想切换那些扇区的可见性,但目前我甚至无法弄清楚如何正确绘制它们。
如果这很重要,则所有绘图都会在self.opaque = NO;
的图层上进行。
答案 0 :(得分:0)
好的,发现我的错误:必须在NO
电话中设置CGContextAddArc
。