Warum gibt es bei addArcWithCenter einen startAngle von 0 Grad bei 90 Grad?

Ich bin erstellen einer CAShapeLayer zu verwenden, als Maske für einen UIView's Schicht. Ich bin mit einem UIBezierPath um die Form zu zeichnen Ebene. Es funktioniert Prima, außer das ich immer einige seltsame Ergebnisse, wenn ich zeichne. Die geometrie ist nicht verhält wie erwartet. Ich bin versucht zu zeichnen einfach "pie slice" in der oberen rechten Ecke:

#define degreesToRadians(x) ((x) * M_PI / 180.0)

...

//"layer" refer's to the UIView's root layer

CAShapeLayer *maskLayer = [CAShapeLayer layer];

maskLayer.frame =
    layer.presentationLayer ? 
    ((CAGradientLayer *)layer.presentationLayer).bounds : layer.bounds;
maskLayer.fillRule = kCAFillRuleEvenOdd;
maskLayer.needsDisplayOnBoundsChange = YES;

CGFloat maskLayerWidth = maskLayer.bounds.size.width;
CGFloat maskLayerHeight = maskLayer.bounds.size.height;
CGPoint maskLayerCenter = 
    CGPointMake(maskLayerWidth/2,maskLayerHeight/2);

UIBezierPath *path = [UIBezierPath bezierPath];

[path moveToPoint:maskLayerCenter];

[path addArcWithCenter:maskLayerCenter radius:(maskLayerWidth/2)
startAngle:degreesToRadians(0) endAngle:degreesToRadians(90) clockwise:YES];

[path closePath];


maskLayer.path = path.CGPath;

layer.mask = maskLayer;

Das Endergebnis ist, dass ein Kreissegment gezeichnet wird in der unteren rechten Ecke. Der erste Punkt des Bogens ist gezogen, die 90 Grad, dann runter auf 180. Warum macht er das obwohl ich mit 0 und 90 Grad Winkel?

InformationsquelleAutor der Frage zakdances | 2013-04-24

Schreibe einen Kommentar