这里不是图形程序员,所以我试图在此不知所措。我正在尝试绘制9个填充的圆圈,每个圆圈具有不同的颜色,每个圆圈带有白色边框。 UIView的框架是CGRectMake(0,0,60,60)。见所附图片。

问题是我在每边的边框上都出现了“平坦的 Blob ”。以下是我的代码(来自UIView子类):

- (void)drawRect:(CGRect)rect
{
    CGRect borderRect = CGRectMake(0.0, 0.0, 60.0, 60.0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
    CGContextSetRGBFillColor(context, colorRed, colorGreen, colorBlue, 1.0);
    CGContextSetLineWidth(context, 2.0);
    CGContextFillEllipseInRect (context, borderRect);
    CGContextStrokeEllipseInRect(context, borderRect);
    CGContextFillPath(context);
}

如果在drawRect中更改为CGRectMake(0,0,56,56),则仅在顶部和左侧获得平坦点,而底部和右侧则看起来不错。

谁能建议我该如何解决?在我看来,UIView限制了边框,但是对此我不太了解,我真的不知道如何解决。

预先感谢您对图形专家的任何建议。

最佳答案

我喜欢@AaronGolden的答案,只想补充一下:

CGRect borderRect = CGRectInset(rect, 2, 2);

或更好:
CGFloat lineWidth = 2;
CGRect borderRect = CGRectInset(rect, lineWidth * 0.5, lineWidth * 0.5);

10-01 16:26