2012-04-20 34 views
0

这是我第一次绘制,所以它必须是一件很愚蠢的,但我的drawRect:方法不起作用...... 这里是我的代码:绘制在Objective-C

- (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); 
} 
+0

它根本不起作用,还是不像您所期望的那样画?另外,为什么哦为什么'#定义中心? – mattjgalloway 2012-04-20 12:06:38

+0

这只是尝试'#define',我可以离开它。它并没有画出来,我在IB中添加了一个UIView,并将该类设置为我的类“FaceView”(是的,Stanford cs193p) – 11684 2012-04-20 12:08:05

+0

我总是忘记:@mattjgalloway – 11684 2012-04-20 12:08:48

回答

3

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

顺便说一句,如果你想要绘制一个圆圈(角度为2π的圆弧是相同的),CGContextAddEllipseInRect更容易使用。

+0

糟糕!我说这是愚蠢的! – 11684 2012-04-20 12:23:57

2

您正在绘制视图外部的圆。 CGContextAddArc以半径为参数。在你的情况下,你正在给方法直径。 快速修复:

radius/=2; 
0

您的示例正在工作。它实际上是绘图,但是你看不到圆,因为半径变量可能会有一个很大的值,使圆被绘制在视图的边界之外。 只需用一个值替换手动半径值,比如说20,然后你就会看到工作正常。

关注