В приложении Apple iPod (Music) есть слайдер (UISlider, я полагаю) с переменными скоростями очистки: чем дальше от ползунка, который вы перетаскиваете вертикально, тем меньше доля вашей горизонтальной скорости перетаскивания, которая отражается в изменении стоимости слайдер. Кто-нибудь понял, как дублировать это поведение?
UISlider с переменной скоростью очистки (например, iPod)
Ответ 1
Хороший вопрос, который вдохновил меня найти решение. Я создал класс с именем OBSlider, который поддерживает переменные скорости очистки.
Краткое решение: подкласс UISlider, переопределить -continueTrackingWithTouch:withEvent:
и выполнить расчет изменения self.value
в зависимости от движения касания самостоятельно. Таким образом, вы можете свободно влиять на коэффициент, с помощью которого вы хотите умножить движение касания, чтобы перейти к новому значению ползунка.
Подробнее читайте в моем блоге: OBSlider, подкласс UISlider с переменной степенью очистки.
Ответ 2
Хорошая работа Оле! Я внес некоторые незначительные изменения, чтобы получить что-то более похожее на то, как работает слайдер приложения iPod, когда вы приближаете палец ближе к UISlider! В основном я обрабатываю переменную для отслеживания значения, соответствующего позиции пальца, и если пользователь приближается, я применяю другую формулу (которая не идеальна и может быть улучшена).
Мой форк доступен здесь: http://github.com/sylverb/OBSlider