2015-10-30 18 views
5

ho questo pezzo di codice:CAShapeLayer strokeStart e strokeEnd posizioni

let arcPath = UIBezierPath(ovalInRect: CGRectMake(0, 0, frame.width, frame.height)) 

    circleLayer = CAShapeLayer() 
    circleLayer.path = arcPath.CGPath 
    circleLayer.fillColor = UIColor.clearColor().CGColor 
    circleLayer.strokeColor = UIColor.blueColor().CGColor 
    circleLayer.lineWidth = 5.0; 

    circleLayer.strokeStart = 0 
    circleLayer.strokeEnd = 0.7 

che si traduce in questo modo:

enter image description here

Come si può vedere, l'arco inizia sul lato destro della cerchio. Mi piacerebbe disegnare l'arco partendo dall'alto. Come potrei farlo? Devo ruotare l'intera cosa di -90 gradi per realizzare ciò che sto cercando di fare?

Grazie.

risposta

10

è possibile creare il percorso come questo

let bezierPath = UIBezierPath(arcCenter:CGPointMake(100,100), radius:40, startAngle: CGFloat(M_PI_2) * 3.0, endAngle:CGFloat(M_PI_2) * 3.0 + CGFloat(M_PI) * 2.0, clockwise: true) 

SceenShot

+0

Questo funziona. Grazie – gasparuff

0

Penso sottraendo 90 * M_PI/180 dall'originale startAngle e endAngle è sufficiente per questo compito.

Dio sa perché Apple decide di trattare a 90 gradi come la cima.