自定义视图绘制一个矩形

时间:2011-10-20 10:07:08

标签: objective-c ios cocoa-touch

我有一个带有以下drawRect方法的自定义视图

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    float w = rect.size.width;

    CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);
    CGContextAddArc(ctx, w / 2, w / 2, w / 2 - 10,  0, 2 * M_PI, 0); 
    CGContextDrawPath(ctx, kCGPathFill);

}

我期待看到一个黑色圆圈,但是,出于某种原因,它会绘制一个黑色矩形。我猜整个视图都充满了黑色。问题在哪里?

3 个答案:

答案 0 :(得分:2)

也许您的观点backgroundColor也是黑色(这是不透明视图的默认设置)?

此外,您不应该假设rect参数涵盖整个视图,它可能只是视图的一部分已被标记为需要重绘。您应该在视图的bounds上建立几何计算。

答案 1 :(得分:2)

您需要添加....

[super drawRect:rect];

作为第一行,然后根据视图背景属性渲染背景,或者如果您愿意,可以自己用背景颜色填充上下文,我更喜欢前者。

答案 2 :(得分:1)

也许如果你剪辑它会被塑造成合适的尺寸?

 CGContextClip(context);

(你为什么不使用CGMutablePathRef btw?)