0

这是我第一次绘图,所以它一定是很愚蠢的东西,但是我的 drawRect: 方法不起作用......这是我的代码:

- (void)drawRect:(CGRect)rect {
    CGPoint center = CGPointMake(self.bounds.origin.x + self.bounds.size.width / 2, self.bounds.origin.y + self.bounds.size.height / 2);self.bounds.origin.y + self.bounds.size.height / 2)
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor redColor] setStroke];
    CGFloat radius = (self.bounds.size.width > self.bounds.size.height) ? self.bounds.size.width - 30 : self.bounds.size.height - 30;
    CGContextBeginPath(ctx);
    CGContextAddArc(ctx, center.x, center.y, radius, 0, 2 * M_PI, YES);
    CGContextStrokePath(ctx);
}
4

3 回答 3

3

弧的半径是从其中心测量的。您正在使用几乎整个视图的宽度/高度,以便将弧线绘制在可见区域之外。使用较小的半径,你会看到你的弧线。

顺便说一句,如果你只想画一个圆(角度为 2π 的圆弧也是一样的),CGContextAddEllipseInRect使用起来会更容易。

于 2012-04-20T12:23:03.257 回答
2

您正在视图外绘制圆圈。CGContextAddArc以半径为参数。在您的情况下,您正在给出方法直径。快速解决:

radius/=2;
于 2012-04-20T12:25:00.427 回答
0

你的例子很有效。它实际上是在绘制,但是您看不到圆,因为半径变量可能会获得一个很大的值,从而使圆在视图边界之外被绘制。只需将手动半径值替换为一个值,例如 20,您就会发现它工作正常。

问候

于 2012-04-20T12:31:17.387 回答