2010-11-01 3 views
1

Таким образом, UISlider отлично работает для изменения/выбора значений, но он просто не выглядит так замечательно. То, что я хотел бы реализовать, больше похоже на круговое вращение. У меня уже есть вся необходимая графика, и я уже реализовал прокрутку, чтобы сместить изображение влево и вправо.Как использовать UIScrollView для изменения значений, как UISlider?

Проблема в этом вопросе заключается в том, что в UISlider не работает, и я могу просто позвонить slider.value, чтобы получить его значение, я не знаю, как установить диапазон значений (макс и мин) и как получить конкретное значение UIScrollView, поскольку он прокручивается.

ответ

3

Я должен признать, что на 100% не уверен, как вы используете scrollview в качестве слайдера, но вы можете использовать свойство contentOffset, чтобы получить «Точка, в которой начало представления содержимого смещено от начала координат прокрутки ".

Вам нужно будет сделать некоторые математические вычисления, чтобы превратить это в нужное вам значение, но это просто. Предположим, что ваш профиль прокрутки горизонтален и его можно прокручивать до 400 пикселей. То есть, если contentOffset равен 0, то вы находитесь в начале, и если contentOffset 400px, то вы в конце. Как вы использовали scrollview, будет точно определять, как вы это работаете, если вы в отчаянии, тогда вы можете просто напечатать значение contentOffset программно и соблюдать эмпирический диапазон.

В этом случае, вы можете получить долю расстояния через Scrollview вы на что-то вроде:

CGFloat proportionOffset = scrollView.contentOffset/400.0f; 

Если затем вы хотите смоделировать диапазон [StartX, EndX], а затем просто работать :

CGFloat offset = startX + proportionOffset * (endX - startX); 

proportionOffset заканчивается в диапазоне от 0 до 1, при 0, когда contentOffset является 0 и на 1, когда contentOffset 400. Если, скажем, StartX составляет 15 и EndX составляет 35, то EndX - StartX составляет 20. Если вы умножаете число в диапазоне от 0 до 1 на 20, вы получаете число в диапазоне от 0 до 20. Это как далеко в вашем диапазоне вы хотите быть. Но ваш диапазон не обязательно начинается с 0, поэтому вам нужно добавить значение startX.

Для эффективного использования умение настраивать себя как делегат прокрутки и проверять новый контент-контент только тогда, когда вы получаете scrollViewDidScroll :. В противном случае вы делаете много опросов, которые просто не нужны и, в абсолютном худшем случае, серьезно затрудняют способность процессора спать (и, следовательно, уменьшают тепло и экономят батарею).

+0

спасибо, я дам этот снимок, но это похоже на то, что мне нужно – cgossain

Смежные вопросы