2017-09-06 6 views
0

Actuellement, j'utilise CAShapeLayer et UIBezierPath pour tracer une ligne pour avatar. C'est OK pour le normal avec lineCap = kCALineCapRound. Mais j'ai du mal à tracer une ligne avec DÉBUT et FINlineCap comme image ci-dessous:Swift 3, dessiner un cercle avec lineCap

enter image description here

+0

Ajoutez le code correspondant à la question afin que nous puissions vous aider à trouver une solution. – Mina

+0

Salut Mina, merci pour votre réponse. Restez concentré sur l'image avec la ligne bleue. Vous pouvez voir le coup de départ a croissant ou enfoncé (je ne sais pas comment le décrire, je viens du Vietnam). J'ai besoin de lineCap comme ceci pour définir le point de départ et le point final. Voici mon code: laisser rectShape = CAShapeLayer() .... rectShape.lineCap = kCALineCapRound –

Répondre

0

Vous ne pouvez pas dessiner ce cercle avec une couche de forme, car un support de couche de forme une seule couleur de trait. Vous devez écrire votre propre classe de couches où vous devez dessiner trois segments de cercle distincts avec kCALineCapRound:

  1. Un cercle jaune complet. Dessinez le segment bleu sur le cercle jaune.
  2. C'est visible et vous pouvez voir les extrémités arrondies. Dessinez un segment du cercle jaune, par exemple 5 degrés du sommet. Ensuite, vous pouvez également voir l'extrémité arrondie de la ligne jaune.

Vous devez utiliser CGPath et CGContext au lieu de UIBezierPath.

+0

macmoonshine Remercier, il vaut la peine d'essayer un peu. –