1

カスタムビューを追加し、内側の小さい円、外側の大きい円、および垂線を描画したいと思います。私のクラスのdrawRect:メソッドは次のようになります。

- (void) drawRect:(CGRect)rect{
    CGContextRef myContext = UIGraphicsGetCurrentContext();
    float height = rect.size.height;
    float width = rect.size.width;
    CGContextTranslateCTM(myContext, 0.0, height);
    CGContextScaleCTM(myContext, 1.0, -1.0);
    CGPoint middle = CGPointMake(width/2, height/2);
    UIBezierPath *innerCirclePath = [UIBezierPath bezierPathWithArcCenter:middle radius:25 startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:YES];
    [innerCirclePath setLineWidth:2];
    [[UIColor redColor] setStroke];
    [innerCirclePath stroke];
    UIBezierPath *outerCirclePath = [UIBezierPath bezierPathWithArcCenter:middle radius:120 startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:NO];
    [outerCirclePath setLineWidth:2];
    [[UIColor greenColor] setStroke];
    [outerCirclePath stroke];
    UIBezierPath *xAxis = [UIBezierPath bezierPath];
    [xAxis moveToPoint:CGPointMake(width, height/2 - 150)];
    [xAxis addLineToPoint:CGPointMake(width, height/2 + 150)];
    [xAxis closePath];
    [[UIColor grayColor] setStroke];
    [xAxis setLineWidth:2];
    [xAxis stroke];
}

今、私は外側と内側の両方の円を取得しますが、私が望んでいた垂線はありません。なぜ描かれないのですか?

4

3 に答える 3

1

次の2つの線を使用して、「垂直線」のパスを設定しています。

[xAxis moveToPoint:CGPointMake(width, height/2 - 150)];
[xAxis addLineToPoint:CGPointMake(width, height/2 + 150)];

問題は、両方のポイントのX座標がビューの右端にあることです。おそらく、ビューの中心に配置する必要があります。

CGFloat xMid = CGRectGetMidX(rect);
[xAxis moveToPoint:CGPointMake(xMid, height/2 - 150)];
[xAxis addLineToPoint:CGPointMake(xMid, height/2 + 150)];
于 2012-08-22T05:16:10.120 に答える
0

ビューの背景は何色ですか?近すぎないように注意する必要greyColorがあります。そうしないと、そこにあったとしても表示されません。

于 2012-08-22T05:12:28.037 に答える
0

これらの2行を変更してみてください

[xAxis setLineWidth:2];
[[UIColor grayColor] setStroke];
于 2012-08-22T05:13:36.490 に答える