2014-02-05 2 views
1

Я работаю над элементом управления, который выглядит как колесо и используется для быстрой или точной прокрутки содержимого. Вот пример из приложения глаз тренера: example scrolling wheel, coach's eye appПравильный способ имитировать бесконечный вид и анимировать его на iOS

Мой первый дубль выглядит следующим образом: my first take on scrolling wheel control

В настоящее время вертикальные линии выполнены в виде набора UIViews. Разумеется, эти вертикальные линии могут быть легко заменены изображениями, чтобы настроить внешний вид. Каждый раз сковородки пользователя:

  • Я изменяю frame.origin.x на все вертикали Вид
  • Если некоторые взгляды уходят экран - я удалить их
  • Если есть разрыв на слева или справа я создавать новые представления, чтобы соответствовать этому месту

Когда пользователь завершает жест панорамирования, я начинаю повторять NSTimer (с как 0,05 секунды), чтобы оживить замедляющее движение колеса. На каждом цикле таймера в двух словах:

  • Вычислить расстояние, чтобы переместить линии и переместить их
  • Вычислить величину скорости торможения и регулировки скорости

Пара вопросов:

  1. Существуют ли какие-либо рамки iOS (например, CoreGraphics, CoreAnimation, UIKitDynamics), которые лучше подходят для реализации этих задач, чем API UIKit, которые я использовал?
  2. Можете ли вы предложить лучший/более правильный способ управления «бесконечным колесом прокрутки»?
  3. Можете ли вы предложить лучший способ реализовать торможение после того, как пользователь закончит панорамирование колеса?

Благодаря

+3

Вы просматриваете использование прокрутки для управления панорамированием и замедлением и просто обновляете содержимое на основе изменения смещения содержимого в обратных вызовах делегата? – Wain

+0

Не могли бы вы охарактеризовать это в более подробной информации (эмуляции бесконечной прокрутки, движущегося содержимого) в ответ, чтобы я мог принять это? –

ответ

0

Я сделал мое "бесконечного колесика" контроля путем настройки SSRollingButtonScrollView. Я думаю, вы должны посмотреть на него один раз. Надеюсь, это поможет вам.

0

У Apple уже есть хороший алгоритм, реализованный для ускорения и замедления - в UIScrollView. И вы можете использовать это, за кулисами, для управления другими видами/взаимодействием. Это можно сделать, подключив жест панорамы из вида прокрутки к другому представлению и действуя как делегат прокрутки.

Обратите внимание на руководство Enhancing User Experience with Scroll Views WWDC video.

+0

Спасибо за ответ. Не могли бы вы поделиться простейшей реализацией концепции? Я предполагаю, что он должен создавать/удалять UIViews динамически, например UITableView. Вероятно, хорошая идея реализовать оболочку, похожую на источник данных.Или, возможно, потребуется отслеживать местоположение прокрутки и установить его на последний/первый элемент, когда достигнут любой из концов. –

+0

Я добавил сырую реализацию UIScrollView + datasource; Я был бы признателен, если бы вы могли добавить логику для циклического просмотра прокрутки. https://github.com/truemetal/UIScrollView-InfiniteScrolling –

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