0

UIView の drawRect メソッドで描画している形状があります。

これはコードです:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [[UIColor brownColor] CGColor]);
    CGContextAddArc(context, 50, 50, 50, 342.0 * (M_PI / 180), 90.0 * (M_PI / 180), 1);

    CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
    CGContextFillPath(context);
    CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
    CGContextStrokePath(context);
}

最初の機能 (塗りと線の間) のみが機能します。

最初にストロークすると、塗りつぶしが機能しません。

どうすればこれを解決できますか?

4

1 に答える 1

1

なぜ 2 つの FillColor を設定するのですか? 必要なのは、CGContextFillPath() と CGContextStrokePath の両方を呼び出す代わりに、CGContextDrawPath() 関数です。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor brownColor] CGColor]);
CGContextAddArc(context, 50, 50, 50, 342.0 * (M_PI / 180), 90.0 * (M_PI / 180), 1);
//    CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextDrawPath(context, kCGPathFillStroke);
于 2013-07-19T12:02:44.347 に答える