0

以下のコードを使用して、カスタムクラスのdrawLayerメソッドに円弧を描画していますCALayerが、何も表示されません。

(void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

{
    float r = self.bounds.size.width/2;

    CGContextClearRect(ctx, self.bounds); // clear layer
    CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor);

    //CGContextFillRect(ctx, layer.bounds);

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, 0) radius:r startAngle:-M_PI_2 endAngle:M_PI_2 clockwise:NO];

    CGContextAddPath(ctx, path.CGPath);
    CGContextStrokePath(ctx);
}

行のコメントを外すCGContextFillRect(ctx, layer.bounds)と、長方形が適切にレンダリングされることに注意してください。

4

3 に答える 3

0

CGPath と UIBezierPath の両方のすべての円弧描画メソッドには、時計回りのパラメーターが YES に設定されている場合にのみ機能する 64 ビット デバイスのバグがあるようです。動作していないコードが表示clockwise:NOされ、動作しているコードにはclockwise:YES.

于 2015-01-09T02:23:56.070 に答える