Как бы вы реализовали переработку представлений во время прокрутки в UIScrollView? - PullRequest
2 голосов
/ 07 мая 2009

Ну, есть делегат, который будет вызван, когда:

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

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

Проблемы:

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

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

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

Ответы [ 3 ]

2 голосов
/ 10 мая 2009

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

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

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

2 голосов
/ 10 мая 2009

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

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

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

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

и потренируйся, когда сможешь переработать представление.

2 голосов
/ 08 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...