iOS encuentra el color en el punto entre dos colores
Tengo un problema: necesito poder tomar dos colores y hacer un "degradado virtual" de ellos. Entonces necesito poder encontrar el color en cualquier punto de esta línea. Mi enfoque actual es este:
if (fahrenheit < kBottomThreshold)
{
return [UIColor colorWithRed:kBottomR/255.0f green:kBottomG/255.0f blue:kBottomB/255.0f alpha:1];
}
if (fahrenheit > kTopThreshold)
{
return [UIColor colorWithRed:kTopR/255.0f green:kTopG/255.0f blue:kTopB/255.0f alpha:1];
}
double rDiff = kTopR - kBottomR;
double gDiff = kTopG - kBottomG;
double bDiff = kTopB - kBottomB;
double tempDiff = kTopThreshold - kBottomThreshold;
double rValue;
double gValue;
double bValue;
rValue = kBottomR + ((rDiff/tempDiff) * fahrenheit);
gValue = kBottomG + ((gDiff/tempDiff) * fahrenheit);
bValue = kBottomB + ((bDiff/tempDiff) * fahrenheit);
return [UIColor colorWithRed:rValue/255.0f green:gValue/255.0f blue:bValue/255.0f alpha:1];
Variables:
fahrenheit
es una variable que se pasa a mi función y es el número en esta línea virtual para la que quiero encontrar el color.kTopR
, kTopB
ykTopG
son los valores RGB para un extremo del gradiente. Igual para sukBottom
contraparteskBottomThreshold
ykTopThreshold
Son los puntos finales de mi gradiente.Aquí está mi problema: Cuandofahrenheit
sobre cada extremo del gradiente, el gradiente parece "saltar" a un valor diferente.
He incluido un proyecto de ejemplo, alojado en mi servidor S3,aquí.
Realmente necesitas descargar el proyecto y probarlo en el simulador / dispositivo para ver a qué me refiero. (a menos que sea un loco inteligente y pueda decirlo con solo mirar el código)