Все оказалось довольно просто для пошаговой работы с переходом цвета. У нас есть UIColor(r:_, g:_, b:_). Просто наращиваем (или снижаем) значение каждого RGB Part и в итоге получает необходимый цвет. Для этого можно воспользоваться маппингом множеств знакомым по функциональному программированию или библиотеке Arduino:
func mapRanges(value: Int, firstRange: Range<Int>, secondRange: Range<Int>) -> Int {
return (
((value - firstRange.startIndex) * (
secondRange.endIndex - secondRange.startIndex)
) / (firstRange.endIndex - firstRange.startIndex)
) + secondRange.startIndex
}