我有一个带有以下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);
}
我期待看到一个黑色圆圈,但是,出于某种原因,它会绘制一个黑色矩形。我猜整个视图都充满了黑色。问题在哪里?
答案 0 :(得分:2)
也许您的观点backgroundColor
也是黑色(这是不透明视图的默认设置)?
此外,您不应该假设rect
参数涵盖整个视图,它可能只是视图的一部分已被标记为需要重绘。您应该在视图的bounds
上建立几何计算。
答案 1 :(得分:2)
您需要添加....
[super drawRect:rect];
作为第一行,然后根据视图背景属性渲染背景,或者如果您愿意,可以自己用背景颜色填充上下文,我更喜欢前者。
答案 2 :(得分:1)
也许如果你剪辑它会被塑造成合适的尺寸?
CGContextClip(context);
(你为什么不使用CGMutablePathRef
btw?)