2016-06-17 5 views
0

Ich versuche, eine Fortschrittsanzeige für einen Musik-Player zu erstellen. Ich bin total neu im Programmieren und habe jetzt wirklich eine Sackgasse erreicht.StrokeEnd nicht Zeichnen von Vollkreis

Mein Fortschritt funktioniert gut. Ich animiere "strokeEnd" mit dem Wert (Wert/Dauer) des Mediadatei, aber strokeEnd erreicht immer nur have des Kreises. Allerdings ist das Lied dann auch fertig, deshalb denke ich, irgendwo berechnet es sich falsch.

Es ist ein sehr einfacher Shaplayer, den ich benutze.

var value: CGFloat = 0.0{ 
didSet { 
    redrawStrokeEnd() } 
} 

private func setupShapeLayer(shapeLayer: CAShapeLayer) { 
let startAngle = CGFloat(M_PI_2) 
let endAngle = CGFloat(M_PI_2 * 2 + M_PI_2) 
progressLayer.path = UIBezierPath(arcCenter:centerPoint, radius: CGRectGetWidth(frame)/2 + 5, startAngle:startAngle, endAngle: endAngle, clockwise: true).CGPath 
progressLayer.strokeStart = 0.0 
progressLayer.strokeEnd = 0.0 } 

func redrawStrokeEnd() { 
progressLayer.strokeEnd = CGFloat(value/CGFloat(duration))} 

Wert = currentTime und Dauer = Playbackduration. Ich kann nicht herausfinden, warum Strich End nicht den vollen Kreis bewegt.

Antwort

0

Vielleicht verwenden Sie die falsche Konstante? Wie einige der anderen Kommentatoren hervorgehoben haben, durchquert ein Kreis im Bogenmaß 2 * pi. Die Konstante M_PI_2 ist jedoch gleich (pi/2). Im Moment traversierst du nur von (pi/2) -> (3pi/2) ... oder pi. Wenn Sie wirklich an pi/2 Versuch starten wollen:

let startAngle = CGFloat(M_PI_2) 
let endAngle = CGFloat(M_PI_2 + 2.0 * M_PI) 
0

Es ist nicht strokeEnd der Grund, den Sie Halbkreis sehen. Sie haben nur falsche Anfangs- und Endwinkel für Ihren Pfad. Sie können sie wie unten beschrieben einen Vollkreis haben:

let startAngle = CGFloat(M_PI_2) 
let endAngle = CGFloat(5*M_PI_2) 

Oder besser, wenn Sie nicht wollen, Winkel von Radiant gesetzt ihnen in Grad wie folgt aus:

let startAngle = CGFloat(0 * M_PI/180) 
let endAngle = CGFloat(360 * M_PI/180.0) 
+0

Startwinkel in Radianten 0 und der Endwinkel 2 * pi – Desdenova

+0

Vielen Dank, seit Tagen damit zu kämpfen. Ich muss noch viel lernen. Alle Lösungen funktionieren gut. Danke noch einmal. – cmag0505

0

einfach den Start zu ändern Winkel und Endwinkel in Ihrem Code werden für Sie arbeiten.

let startAngle = -90.0 
let endAngle = -90.01