Я предлагаю сделать это с помощью дуг (на самом деле, полукругов) вместо закругленных прямоугольников. Например, рассмотрим одну часть на три отдельных полукольцами:
Вы могли бы нарисовать эти дуги, как так:
CGContextAddArc(context, center.x, center.y - side/4.0, side/4.0, M_PI_2, -M_PI_2, TRUE); // red part
CGContextAddArc(context, center.x, center.y + side/4.0, side/4.0, M_PI_2, -M_PI_2, NO); // blue part
CGContextAddArc(context, center.x, center.y, side/2.0, -M_PI_2, M_PI_2, YES); // dark grey stroke
Но очевидно, что вы, вероятно, на самом деле не сделать эти штрихи, а просто заполнить их, а затем повторить этот процесс для нижней части символа:
- (void)drawRect:(CGRect)rect {
CGFloat side = MIN(rect.size.width, rect.size.height); // length of the side of the square in which the symbol will rest
CGPoint center = CGPointMake(rect.size.width/2.0, rect.size.height/2.0); // the center of that square
CGContextRef context = UIGraphicsGetCurrentContext();
// draw white part
CGContextAddArc(context, center.x, center.y - side/4.0, side/4.0, M_PI_2, -M_PI_2, TRUE);
CGContextAddArc(context, center.x, center.y + side/4.0, side/4.0, M_PI_2, -M_PI_2, NO);
CGContextAddArc(context, center.x, center.y, side/2.0, -M_PI_2, M_PI_2, YES);
CGContextClosePath(context);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);
// draw black part
CGContextAddArc(context, center.x, center.y - side/4.0, side/4.0, M_PI_2, -M_PI_2, TRUE);
CGContextAddArc(context, center.x, center.y + side/4.0, side/4.0, M_PI_2, -M_PI_2, NO);
CGContextAddArc(context, center.x, center.y, side/2.0, -M_PI_2, M_PI_2, NO);
CGContextClosePath(context);
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextFillPath(context);
// draw black dot
CGContextAddArc(context, center.x, center.y - side/4.0, side/12.0, 0, M_PI * 2.0, YES);
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextFillPath(context);
// draw white dot
CGContextAddArc(context, center.x, center.y + side/4.0, side/12.0, 0, M_PI * 2.0, YES);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);
}
это дает:
Спасибо! Это сработало отлично. Я все время делал это неправильно. – Cory