Способ, которым я это сделал раньше, - это просто использовать изображения.
Вы можете визуализировать каждый пиксель на основе его положения и т. Д. ... но это очень интенсивный материал, и изображение на самом деле не изменится.
В разных приложениях уже есть встроенный градиент оттенка (Pixelmatr и Photoshop оба).
Просто создайте изображение градиента оттенка и используйте его за слайдером оттенка.
Для слайдера яркости создайте прозрачное изображение черного градиента и поместите его на ползунок. Теперь вы можете просто установить цвет слайдера, а градиент на нем будет выглядеть корректно.
Я использовал эту технику для создания этого выбора цвета в приложении шахты ...
«ползунок» на левом использует одно изображение с градиентом оттенком.
Подбор «яркость/насыщенность» справа использует одно изображение с белым прозрачным градиентом слева направо и черно-прозрачный градиент снизу вверх. Затем мне нужно установить цвет фона на основе оттенка.
Пример
Все цвета в прошивкой использовать 0,0-1,0 цвета на основе.
Итак, все, что вам нужно, это процент от того, насколько далеко вы находитесь на каждом из видов.
Итак, у вас есть позиция CGPoint
и вам нужно произвести процент.
Каждый цвет «3 мерный» (4 с альфой, но я его не включил), поэтому вам нужно три процента.
Для зрения цветового тона, который легко ...
// put this inside the hue view (if you're not using a UISlider
// this works vertically you ay need yours to work horizontally.
- (CGFloat)hueValueForTouchPosition:(CGPoint)touchPoint {
return touchPoint.y/CGRectGetHeight(self.frame);
}
Это возвращает правильное значение цветового тона, основываясь на положении прикосновения в представлении.
Теперь вы можете использовать это, чтобы установить цвет фона в режиме яркости.
// this will change the background color of the brightness view to match the selected hue
CGFloat hue = [self.hueView hueValueForTouchPosition:touchPoint];
self.brightnessView.backgroundColor = [UIColor colorWithHue:hue brightness:1.0 saturation:1.0 alpha:1.0];
Теперь вы просто должны делать то же самое с яркостью
Я не рассчитали для яркости цвета, но я предлагаю вам использовать 'UIColor' метод' + (UIColor *) colorWithHue: (CGFloat) насыщенность оттенка: (CGFloat) яркость насыщенности: (CGFloat) яркость альфа: (CGFloat) alpha; 'и изменение яркости при движении ползунка. – Kampai
Возможно ли создать слайдер на основе метода (UIColor * colorWithHue ....), чтобы получить визуальное представление о том, что выглядит цвет? – brumbrum
Я просто хочу проверить, что вопрос здесь. Вы спрашиваете о том, как визуализировать изображения слайдера, чтобы они были динамическими и могли меняться в зависимости от того, что делает пользователь. Вы не спрашиваете о том, как создать UIColor со слайдера? – Fogmeister