2017-02-01 2 views
2

Je suis un programmeur débutant dans Swift, et j'essaye de dessiner une ellipse dans swift avec un dégradé d'arc-en-ciel qui la remplit, semblable à une roue chromatique.Dessiner Rainbow Gradient dans Ellipse dans Swift

Je suis confus quant à la façon d'aborder cela. Je dessine actuellement l'ellipse:

let context: CGContext = UIGraphicsGetCurrentContext()! 
    context.setFillColor() 
    context.addEllipse(in: Rectangle) 
    context.drawPath(using: .fill) 

Mais au lieu de définir la couleur de remplissage, je veux dessiner un gradient d'arc à l'intérieur.

J'ai regardé cette méthode de gradient:

context.drawLinearGradient() 

Mais je ne suis pas sûr de savoir comment s'y prendre. Si quelqu'un pouvait me diriger dans la bonne direction, j'apprécierais. Merci!

+1

CGContext ne prend pas en charge les dégradés angulaires. Certaines bibliothèques tierces sont disponibles pour cela, par exemple: https://github.com/paiv/AngleGradientLayer – jtbandes

+1

Voir aussi: http://stackoverflow.com/questions/6485468/drawing-an-angle-angular-conical- arc-gradient-dans-objectif-c-ios-using – jtbandes

+0

@jtbandes Merci pour la référence à cette bibliothèque de couche anglegradient! – codex

Répondre

2
drawLinearGradient(_:start:end:options:) 

Peint un remplissage en dégradé qui varie le long de la ligne définie par les points de début et de fin fournis.

La couleur à l'emplacement 0 de l'objet CGGradient est mappée au point de départ. La couleur à l'emplacement 1 dans l'objet CGGradient est mappée au point de fin. Les couleurs sont interpolées linéairement entre ces deux points en fonction des valeurs d'emplacement du dégradé. Les indicateurs d'option contrôlent si le dégradé est dessiné avant le point de départ ou après le point de fin.

+0

Ce n'était pas exactement ce que je cherchais. La bibliothèque de gradient d'angle que quelqu'un d'autre a référencée dans un commentaire a fini par aider. Cependant, merci pour votre réponse et d'expliquer la méthode. – codex