2009-04-24 2 views
5

Я хотел бы воспроизвести поведение движка по экрану UIScrollView, но я не хочу использовать (или не использовать) этот класс. Что я могу сделать?Как я могу воспроизвести поведение flick-to-scroll для iPhone UIScrollView в моем собственном пользовательском представлении?

+0

Примечание: вопрос касался OpenGL-представления – Thanks

+0

Правда, в _my_ случае я думал о просмотрах OpenGL. Однако, см. Мой ответ на Роджера Нолана ниже - я думаю, что есть много интересных случаев, отличных от OGL. –

ответ

8

Хорошо, я ответил на это, выполнив мою собственную библиотеку, которая отображает динамику UIScrollView.

Что полезно для моего кода, так это то, что оно не зависит от системы координат, скорости анимации и определенных классов пользовательского интерфейса, которые вы используете. Он может быть легко вложен в пользовательский класс просмотра по вашему выбору.

Потрясающее поведение iPhone по-прокручиванию интересно. Если вы удерживаете палец в течение длительного времени и перемещаете его по разным направлениям, вы увидите, что для вычисления движения прокрутки используется только последнее направление.

Если вы попытаетесь самостоятельно создать этот код, вы быстро обнаружите, что просто используя последние две точки для вычисления направления движения не собирается его обрезать. Вместо этого мой код хранит короткую историю штрихов и использует линейную интерполяцию, чтобы определить, где «было бы» какое-то небольшое количество времени назад. Эта интерполированная точка используется в качестве основы для вычисления вектора движения. Это приводит к очень приятному взаимодействию.

Код доступен на github, здесь: http://gist.github.com/100855. Он выпущен под лицензией BSD.

+0

Вы ответили на свой вопрос - с помощью довольно привлекательного кода - в течение 2 минут после его запроса? Это интересный код, так что хорошо! –

+0

Да, я не знал, было ли это кошерным для Stack Overflow, но так как я обнаружил, что я не единственный, кто ищет его, я решил, что это будет полезно? Есть ли лучший форум? –

0

А как насчет UIScrollView не сработало для вас? Этот класс является довольно гибким ...

+0

У меня есть представление OpenGL для игры, и я хотел иметь возможность управлять окном просмотра так же, как у UIScrollView ... –

0

Дэйва, я вижу, вы answerd свой вопрос с каким-то кодом, но, не устанавливая следующее дать вам то, что вам нужно:

myScrollView.bounces = YES; 
myScrollView.pagingEnabled = YES; 
myScrollView.directionalLockEnabled = YES; 

В частности, это похоже, что вы переопределили directionLockEnabled. Возможно, понимание того, почему вы не можете использовать UIScrollView, представляет собой более интересную проблему :-)

+0

Смотрите мой комментарий выше. Я пытаюсь воспроизвести поведение в контексте, в котором UIScrollView не может идти (или, по крайней мере, не должен идти.) –

+0

(И: я должен указать, что то, что я сделал, НЕ то же самое, что просто установить несколько свойств в прокрутке. Если это то, что мне нужно было сделать - ну, я бы это сделал. :-) –

+0

... и мне интересно, что это такое ;-) –

0

Это классно! Я использовал его в приложении, где мое прокручиваемое представление представляет собой графические данные за один день в диапазоне от 1902-2037, поэтому UIScrollView не будет эффективным.

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