12 votes

Dessiner un cercle sans remplissage IOS

J'utilise ce code pour dessiner un cercle à l'intérieur d'un UIImageView.

CAShapeLayer *circleLayer = [CAShapeLayer layer];
// Give the layer the same bounds as your image view
[circleLayer setBounds:CGRectMake(0.0f, 0.0f, [photoView bounds].size.width,
                                  [photoView bounds].size.height)];
// Position the circle anywhere you like, but this will center it
// In the parent layer, which will be your image view's root layer
[circleLayer setPosition:CGPointMake(coordsFinal.x + 130, coordsFinal.y + 200)];
// Create a circle path.
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:
                      CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
// Set the path on the layer
[circleLayer setPath:[path CGPath]];
// Set the stroke color
[circleLayer setStrokeColor:[color CGColor]];
// Set the stroke line width
[circleLayer setLineWidth:2.0f];

// Add the sublayer to the image view's layer tree
[[photoView layer] addSublayer:circleLayer];

Je voudrais que le cercle soit vide et qu'il n'y ait que la bordure. Comment puis-je supprimer le remplissage ?

17voto

foundry Points 15423

Définir la couleur de remplissage comme étant transparente (alpha 0)

[circleLayer setFillColor:[[UIColor colorWithWhite:0 alpha:0] CGColor]];

AKA...

[circleLayer setFillColor:[[UIColor clearColor] CGColor]];

( Merci Zev )

6voto

binary star Points 81

La page de manuel de CAShapeLayer indique explicitement que le paramètre fillColor doit être réglé sur nil pour ne pas effectuer d'opération de remplissage. Ce n'est pas la même chose que de remplir avec une couleur transparente, ce que certains ont suggéré de faire, car cette dernière opération écrase le contenu existant en le rendant clair/transparent, et doit être considérée comme une opération destructive.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X