UIBezierPath绘制具有不同笔划的圆

时间:2013-08-23 13:30:40

标签: ios drawrect uibezierpath

基本上我需要一个不同颜色的笔划圆圈,大小相等。例如,1/2是蓝色,1/2是红色。图片(对不起这么糟糕的图片):

Example

我怎样画这样的东西?

1 个答案:

答案 0 :(得分:23)

有很多方法可以做到这一点,但其中一种方法是绘制两条bezier路径,每条路径一条:

- (void)drawRect:(CGRect)rect
{
    UIBezierPath *blueHalf = [UIBezierPath bezierPath];
    [blueHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:-M_PI_2 endAngle:M_PI_2 clockwise:YES];
    [blueHalf setLineWidth:4.0];
    [[UIColor blueColor] setStroke];
    [blueHalf stroke];

    UIBezierPath *redHalf = [UIBezierPath bezierPath];
    [redHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:M_PI_2 endAngle:-M_PI_2 clockwise:YES];
    [redHalf setLineWidth:4.0];
    [[UIColor redColor] setStroke];
    [redHalf stroke];
}

或者,如果您想在Core Graphics中执行此操作:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 4);

    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
    CGContextAddArc(context, 100, 100, 90, -M_PI_2, M_PI_2, FALSE);
    CGContextStrokePath(context);

    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
    CGContextAddArc(context, 100, 100, 90, M_PI_2, -M_PI_2, FALSE);
    CGContextStrokePath(context);
}