Подтвердить что ты не робот

UISlider с переменной скоростью очистки (например, iPod)

В приложении Apple iPod (Music) есть слайдер (UISlider, я полагаю) с переменными скоростями очистки: чем дальше от ползунка, который вы перетаскиваете вертикально, тем меньше доля вашей горизонтальной скорости перетаскивания, которая отражается в изменении стоимости слайдер. Кто-нибудь понял, как дублировать это поведение?

4b9b3361

Ответ 1

Хороший вопрос, который вдохновил меня найти решение. Я создал класс с именем OBSlider, который поддерживает переменные скорости очистки.

Краткое решение: подкласс UISlider, переопределить -continueTrackingWithTouch:withEvent: и выполнить расчет изменения self.value в зависимости от движения касания самостоятельно. Таким образом, вы можете свободно влиять на коэффициент, с помощью которого вы хотите умножить движение касания, чтобы перейти к новому значению ползунка.

Подробнее читайте в моем блоге: OBSlider, подкласс UISlider с переменной степенью очистки.

Ответ 2

Хорошая работа Оле! Я внес некоторые незначительные изменения, чтобы получить что-то более похожее на то, как работает слайдер приложения iPod, когда вы приближаете палец ближе к UISlider! В основном я обрабатываю переменную для отслеживания значения, соответствующего позиции пальца, и если пользователь приближается, я применяю другую формулу (которая не идеальна и может быть улучшена).

Мой форк доступен здесь: http://github.com/sylverb/OBSlider