UISlider с определенными возможными значениями - PullRequest
2 голосов
/ 10 сентября 2010

Я готов сделать этот виджет:

alt text

Можно выбрать только A-B-C.

Есть идеи, если кто-то уже делал что-то подобное? Если нет, то как бы вы это сделали?

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Лично я бы использовал стандартный UISlider и добавил логику в обработчик valueChanged, чтобы после того, как пользователь перетащил ползунок в произвольную точку на шкале, код определяет, какое значение является ближайшим «допустимым», и будет вручную установите значение на действительное число.

например. если пользователь перетаскивает ползунок до 0,9, расстояния до действительных точек составляют 0,9 (до А), 0,4 (до В) и 0,1 (до С). Таким образом, код выберет C и установит значение slider.value в 1.0. Не могу вспомнить, если бы вы могли оживить это свойство, но вы, вероятно, можете. Это выглядело бы намного приятнее для пользователя.

Для визуалов я бы создал контейнерный класс, который содержит UISlider и UILabel для каждого допустимого значения. Расположить эти метки вдоль шкалы под слайдером в соответствии с их положением не так уж сложно. При подходящем автоматическом изменении размера элемент управления должен выглядеть правильно, независимо от того, как вы изменили форму представления контейнера.

Для полировки я, вероятно, также настроил бы шрифт для метки selected, чтобы выделить его жирным шрифтом или что-то еще, чтобы сделать вдвойне очевидным, что элемент был выбран.

1 голос
/ 10 сентября 2010

Я бы добавил UIGestureRecognizer к «изображению ползунка» и анимировал «кнопку ползунка» в соответствующую позицию, если касание или перетаскивание закончилось в пределах области A, B или C ползунка.

...