Wenn Sie nur zwischen zwei Farben interpolieren möchten, können Sie zwischen jeder RGB-Farbkomponente interpolieren (Sie könnten dies auch mit HSB tun).
Definieren Sie eine Start- und Endfarbe. Ich wählte eine Tupel Darstellung:
typealias Color = (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
let startColor: Color = (red: 0.0/255, green: 114.0/255.0, blue: 96.0/255.0, alpha: 1.0)
let endColor: Color = (red: 10.0/255.0, green: 188.0/255.0, blue: 161.0/255.0, alpha: 1.0)
die Anzahl der Schritte ermitteln und die Schrittgröße für jede Farbkomponente:
var data = [/* ... */]
let steps = data.count > 1 ? CGFloat(data.count - 1) : 1.0
let rStep = (endColor.red - startColor.red)/steps,
gStep = (endColor.green - startColor.green)/steps,
bStep = (endColor.blue - startColor.blue)/steps,
aStep = (endColor.alpha - startColor.alpha)/steps
schließlich in Ihrem cellForRowAtIndexPath
:
let rowIdx = CGFloat(indexPath.row)
myCell.backgroundColor = UIColor(red: startColor.red + rowIdx * rStep, green: startColor.green + rowIdx * gStep, blue: startColor.blue + rowIdx * bStep , alpha: startColor.alpha + rowIdx * aStep)
Wenn Ihr Handy Wenn Sie Änderungen zählen, möchten Sie natürlich die Schrittgröße für jede Farbkomponente neu berechnen.
Das Ergebnis auf einem Spielplatz:

ehrfürchtige Antwort Dank! nur noch eine frage der zweite schritt, all diese berechnung wo deklariere ich sie ?, ich frage das, weil es mir einen fehler wirft "Instanz member 'kategorien' kann nicht auf typ 'HomeVC'" –
@CesarMtz verwendet werden Sie können jede Schrittvariable als Instanzvariable auf Ihrem View-Controller beibehalten und sie aktualisieren, wenn sich Ihre Datenanzahl ändert. In diesem Fall könnten Sie die Berechnung in eine Funktion einfügen, die von 'viewDidLoad' aufgerufen wird. Die einzige Sache ist, dass Sie nicht wollen, dass dieser Code für _every_ 'cellForRowAtIndexpath' aufgerufen wird, da sich die Schrittgrößen nur ändern, wenn sich Ihre Datenanzahl ändert, und Sie daher unnötige Berechnungen durchführen. –
Super Danke !! –