2016-08-12 5 views
-1

Ich versuche, einen Bogen unter Verwendung UIBezierPath zu zeichnen. Es gibt keine Fehler oder Warnungen und ich kann keine offensichtlichen Fehler sehen, aber es wird einfach nicht zeichnen. Dies ist mein Code:UIBezier Weg, der sich weigert zu zeichnen

- (void)drawRect:(CGRect)rect {  

CGFloat a = 10; 

CGFloat width = CGRectGetWidth(self.bounds); 
CGFloat height = CGRectGetHeight(self.bounds); 

CGPoint center = CGPointMake(width/2, height/2); 
CGFloat radius = MAX(width, height); 
CGFloat archWidth = 18; 
CGFloat archLengthPerA = 5; 
CGFloat startAngle = 3 * M_PI /2; 
CGFloat endAngle = archLengthPerA * a + startAngle; 

UIBezierPath* path = [UIBezierPath bezierPath]; 
[path addArcWithCenter:center 
         radius:radius 
        startAngle:startAngle 
        endAngle:endAngle 
        clockwise:YES]; 

path.lineWidth = archWidth; 
[[UIColor colorWithRed:255 green:17 blue:0 alpha:1.0] setStroke]; 
[path stroke]; 
} 

ich es in einer separaten Ansicht auf den Prüfstand und es auf _myString abgestürzt so ist, dass alles, was damit zu tun? Ich habe versucht, einen Haltepunkt hinzuzufügen, um zu sehen, ob es ohne es funktioniert hat, aber dann ist es wieder abgestürzt. Irgendwelche Ideen, warum es nicht funktioniert?

+0

Schritt durch sie mit dem Debugger und sehen, welche Werte '_myString' und' a' und 'startAngle' und' endAngle' haben. Am wahrscheinlichsten ist 'a' gleich 0, also ist 'startAngle' das gleiche wie 'endAngle', also verlangt man nach einem Bogen mit der Größe null, der natürlich nichts zeichnet. Sie können Ihren Code leicht ändern, um zu überprüfen, was passiert, wenn 'a' andere Werte hat - zum Beispiel' CGFloat a = 1.0; '. –

+0

@KurtRevis nur überprüft und sie haben Werte, so ist es nicht das –

+0

Also _welche Werte haben sie_? Gib uns einen [MCVE] (http://stackoverflow.com/help/mcve). –

Antwort

1

Ihr Wert von radius ist zu groß, daher wird der Bogen außerhalb der Ansicht gezeichnet.

Machen Sie es kleiner. Zum Beispiel:

CGFloat radius = MIN(width/2, height/2); 
0

Auch Ihre Farbwerte sind falsch:

[[UIColor colorWithRed: 255 grün: 17 blau: 0 alpha: 1,0] setStroke];

Die Farbkomponenten dieser Klasse Methode CGFloat mit Werten zwischen 0,0 und 1,0 liegen sollte

Verwandte Themen