Quartz Core绘制了一些原语

时间:2014-01-30 07:42:08

标签: ios iphone objective-c quartz-core

我想在其中绘制一个带有白色矩形(或几个矩形)的绿色圆圈。但我无法理解,如何使用CGContext方法。这是我的代码。首先我绘制一个圆圈并填充它,然后我想在我的圆圈内绘制其他东西。但如果我使用相同的CGContextRef绘制内部基元,CGContextSetFillColor会改变我的圆圈颜色。

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextSetFillColor(ctx, CGColorGetComponents([self.color CGColor]));
    CGContextFillPath(ctx);

    switch (self.type)
    {
        case ETBRoundViewTypeBook:
        {
            CGRect bookRect = CGRectMake(CGRectGetMidX(rect) - 10, CGRectGetMidY(rect) - 12, 20, 24);
            CGContextAddRect(ctx, bookRect);
            CGContextSetFillColor(ctx, CGColorGetComponents([UIColor whiteColor].CGColor));
            CGContextFillPath(ctx);
        }
        case ETBRoundViewTypeList:
        {
            break;
        }
        case ETBRoundViewTypeTick:
        {
            break;
        }
        default:
            break;
    }
}

编辑:将CGContextSetFillColor替换为CGContextSetFillColorWithColor即可解决问题。

1 个答案:

答案 0 :(得分:1)

我刚试过这个并且有效。

-(void)drawRect:(CGRect)rect{
    CGContextRef ctx =UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextSetFillColorWithColor(ctx, [UIColor greenColor].CGColor);
    CGContextFillPath(ctx);
    CGContextAddEllipseInRect(ctx, CGRectMake(30, 30, 40, 40));
    CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);
    CGContextFillPath(ctx);
}