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 に答える