2009-05-07 1 views
2

Ну, есть делегат, который будет вызван, когда:Как бы вы реализовали повторное использование видов во время прокрутки в UIScrollView?

  • прокрутки вид beginns прокрутки
  • палец liftet из с точки зрения прокрутки после инициализации прокрутки движения
  • вид прокрутки перестал выполнять торможение

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

Проблемы:

  • Пользователь может прокручивать очень медленно или очень быстро. Я не знаю.

  • Как только начинается прокрутка, я должен проверить, то есть 50 раз в секунду, что такое смещение, и определить, пришло ли время для повторного использования видов или нет. Следующая проблема заключается в том, как вызывать метод 50 раз в секунду и как остановить это как прокрутку.

Какие шаблоны вы знаете, чтобы решить эту проблему? Я уверен, что там есть хорошие.

ответ

2

Вид на стол отлично подходит для такого рода вещей и очень гибкий.

+1

не так хорошо, если вы хотите прокручивать влево или вправо или в любом направлении. –

2

На самом деле метод scrollViewDidScroll вызывается непрерывно во время прокрутки, а не при поднятии пальца. (Фактически он вызывается каждый раз, когда изменяется contentOffset, будь то из-за пользовательской прокрутки или программных изменений.) Таким образом, вы можете безопасно использовать его для повторной обработки представлений.

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

И, конечно же, если вы собираетесь упорядочить свои взгляды по вертикали, UITableView является вашим другом и выполняет переработку для вас. (Он также поддерживает строки переменной высоты, если вы заинтересованы.)

+0

Спасибо! Также может случиться так, что пользователь быстро щелкнет, а затем прокрутит несколько страниц вниз или вверх за один ход, пока не закончится замедление. Я не использовал UITableView, потому что мне нужен полный контроль над UIImageView в представлении прокрутки. То есть, потому что я реализовал некоторые специальные эффекты, которые происходят во время прокрутки. – Thanks

+0

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

+0

Кстати, вы можете более подробно объяснить, что именно вы делаете, что невозможно сделать с помощью табличного представления? Просто интересуюсь. –

2

Если подкачки включены, то ваш делегат получает

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

и работать, когда вы можете переработать вид.

+0

Спасибо! Я использовал scrollView - (void) scrollViewDidScroll: (UIScrollView *); для этого. – Thanks

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