У меня проблема: мне нужно иметь два цвета и сделать из них «виртуальный градиент». Затем мне нужно найти цвет в любой точке этой линии. Мой текущий подход заключается в следующем: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, here.
Вам действительно нужно загрузить проект и попробовать его на тренажере/устройства, чтобы увидеть, что я имею в виду (если вы не сумасшедший умный и могу сказать, просто посмотрев на код)