iOS находит цвет в точке между двумя цветами
У меня есть проблема: мне нужно иметь возможность взять два цвета и сделатьвиртуальный градиент из них. Затем мне нужно найти цвет в любой точке этой линии. Мой текущий подход заключается в следующем:
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];
Переменные:
fahrenheit
переменная, переданная в мою функцию, это число в этой виртуальной строке, для которого я хочу найти цвет.,kTopR
kTopB
, а такжеkTopG
значения RGB для одного конца градиента. То же самое для ихkBottom
двойники.kBottomThreshold
а такжеkTopThreshold
являются конечными точками моего градиента.Вот'моя проблема: когдаfahrenheit
проходит через любой конец градиента, кажется, что градиентПрыгать' к другому значению. Я '
мы включили пример проекта, размещенного на моем сервере S3,Вот.
Вам действительно нужно скачать проект и попробовать его на симуляторе / устройстве, чтобы понять, что я имею в виду (если вы не сошли с ума и не можете сказать, просто посмотрев на код)