2014-11-22 6 views
6

Sto tentando di accarezzare i percorsi in CAShapeLayer utilizzando i trattini. Ho creato molti schemi di trattini usando la proprietà lineDashPattern. Ma questa proprietà non fornisce alcuna opzione per il tipo di trattino tracciato. Voglio essere le mie linee di essere punti rotondi come nell'immagine qui sotto:Come disegnare il ciclo di punti arrotondati per un CAShapeLayer?

enter image description here

So che può essere raggiunta perché ho visto questo in molte applicazioni. Ma non sono in grado di trovare alcun modo per implementarlo nella libreria CAShapeLayer. Quindi voglio sapere come ottenere questi pattern a punto rotondo?

risposta

4

Tutto quello che dovete fare è impostare kCALineCapRound per la Linecap proprietà della vostra CAShapeLayer e quindi impostare il vostro lineDashPattern a [0,0, x], dove per esempio x è 2 * il larghezza della linea del tuo CAShapelayer se vuoi che il margine tra i punti sia lungo quanto il diametro dei punti.

Il 0,0 per il primo segmento dipinto in lineDashPattern c'è causa kCALineCapRound disegna un semicerchio davanti e dietro il segmento dipinto e qualsiasi segmento dipinto maggiore di zero causerebbe il punto di diventare un pillola. enter image description here

+0

Anche se ho impostato 'x = 2 * linewitdh' mi dà pillole –

+1

X non ha nulla a che fare con la forma del punto, definisce il margine tra i punti (il segmento non verniciato). Lo zero nell'esempio è ciò che forma il punto, se il segmento dipinto è più grande di zero ti dà una pillola. –

1

provare il seguito snippet

shapeLayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2 * stroke.width()], nil]; 
shapeLayer.lineCap = kCALineCapRound; 
3

prova // rapida

layer.strokeColor = UIColor.whiteColor().CGColor 
layer.fillColor = UIColor.clearColor().CGColor 
layer.lineWidth = 4 
layer.lineDashPattern = [0.01, layer.lineWidth * 2] 
layer.lineCap = kCALineCapRound