Ich habe ein Problem beim Zeichnen eines Bogens innerhalb meiner Zeichenfunktion innerhalb einer CALayer-Unterklasse. Die Implementierung für die Zeichenfunktion ist wie folgt:CGContextAddArc entgegen dem Uhrzeigersinn statt im Uhrzeigersinn
-(void)drawInContext:(CGContextRef)ctx
{
CGPoint center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2);
CGFloat radius = MIN(center.x, center.y);
CGContextBeginPath(ctx);
CGContextAddArc(ctx, center.x, center.y, radius, DEG2RAD(0), DEG2RAD(90), YES);
CGContextSetStrokeColorWithColor(ctx, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(ctx, 5);
CGContextDrawPath(ctx, kCGPathStroke);
}
Nichts hier auch wegweisend, aber das Seltsame ist, dass sie den Bogen Zeichnung gegen den Uhrzeigersinn, obwohl ich angegeben, dass es im Uhrzeigersinn shoud. Umgekehrt, wenn ich NEIN für den Parameter im Uhrzeigersinn festlege, wird der Bogen im Uhrzeigersinn gezeichnet. Ich habe ein paar Nachforschungen über umgedrehte Koordinatensysteme angestellt und herausgefunden, dass dies möglicherweise das Problem ist, aber ich wollte nicht einfach den entgegengesetzten Bool-Parameter fest codieren, was ich meinte. Irgendwelche Vorschläge, wie Sie das beheben können?
Danke!
Danke für die super schnelle Antwort und Erklärung! Ich habe versucht, den Code hinzuzufügen, den Sie gepostet haben, und er zeichnet jetzt im Uhrzeigersinn wie erwartet, aber anstatt einen Quadranten zu zeichnen (der untere rechte Quadrant des Kreises wie erwartet für einen Bereich von 0-90 Grad), zeichnet er den 0-270 Grad-Bereich im Uhrzeigersinn. Irgendwelche Ideen warum? –
Ich habe es gerade versucht, und es wird 3/4 eines Kreises von genau nach Osten (0 Grad) im Uhrzeigersinn bis genau nach Norden (90 Grad) gezeichnet. Wenn Sie den unteren rechten Quadranten des Kreises wünschen, sollte er von 0 Grad bis 270 Grad (genau nach Süden) im Uhrzeigersinn verlaufen. Der Parameter im Uhrzeigersinn ändert nicht, wie die Winkel interpretiert werden, nur welche "Hälfte" des Kreises gezeichnet wird. –
Oh okay Ich denke ich verstehe, warum das so ist ... durch die Flip-Transformation werden die 90 und 270 Grad Positionen vertauscht und das x wird in Ruhe gelassen. Das tut mir leid. –