пытается нарисовать круг, разделенный на динамически предоставленное количество секторов. В конце мой круг должен выглядеть как пирог.
Я создал класс 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;
.