2010-12-09 5 views
1

на мой взгляд, iPhone имеет большое преимущество для других смартфонов из-за его интуитивно понятных, гладких и хороших прокручивающих компонентов в UIKit. Я хочу реализовать простую игру с UIKit, которая использует этот вид прокрутки, но я не могу использовать UIScrollView, потому что он не настраивается достаточно.Как работает UIScrollView как прокрутка?

Я пытался реализовать эту прокрутку себя и попытался два различных подхода:

  1. Я использовал унд UIPanGestureRecognizer переместили границы моего таможенного контроля в соответствии с переводом распознаватель доставляет мне. Чтобы получить эту гладкую прокрутку после поднятия пальца во время движения, я начинаю анимацию. Я использую скорость, которую распознаватель дает мне и фиксированное время, чтобы рассчитать, как далеко она должна прокручиваться после того, как я поднял палец. Я попробовал линейное движение и легкое движение, но оба выглядят странно. (позже)

  2. Я использую OnTouchMoved и OnTouchEnded для реализации прокрутки. В OnTouchMove я перемещаю границы в соответствии с движением пальца. Пока движется палец, я вычисляю разницу в местоположении и времени текущего и последнего касания, чтобы вычислить скорость самостоятельно. Когда палец поднимается, я запускаю анимацию в OnTouchEnded, как в 1. но вместо этого использую свою самовычислимую скорость.

Оба подхода не дают мне результатов, которые я хочу. После поднятия пальца прокрутка плавно продолжается. Кажется, что (резкий) изгиб кривой чистоты.

Есть ли у кого-нибудь представление о том, как яблоко делает эту гладкую прокрутку? Моя нынешняя гипотеза заключается в том, что моя интерполяция с двумя действительно близкими точками является неточной и не учитывает текущее ускорение.

Thx для ваших мыслей! Kie

ответ

3

Почему бы вам не добавить UIScrollView как дескриптор поверх вашего представления без видимого содержимого. Затем вы можете использовать методы UIScrollViewDelegate для обновления вашего реального вида определенных действий. Например: если вы закроете прокрутку UIScrollView с помощью scrollViewDidScroll:, вы можете обновить свой видимый вид со смещением scrollview. Вы можете использовать scrollViewWillEndDragging: чтобы начать синхронизацию основного представления с помощью scrollview и scrollViewDidEndDecelerating, чтобы остановить синхронизацию.

Я использую тот же подход для прокрутки фона моего приложения Animix. Он имеет невидимую прокрутку внизу, чтобы дать пользователю ощущение, что он может перетащить траву влево и вправо, чтобы переместить фон.

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