Пейджинг UIScrollView с разной шириной страницы

Я хотел бы иметь UIScrollView с горизонтальной прокруткой с включенным разбиением по страницам. Страницы в этом режиме прокрутки имеют разную ширину, поэтому расстояние прокрутки различается от страницы к странице.

Цель состоит в том, чтобы сделать сборщик для разных моментов времени, например:

|  Now  |  Yesterday evening |  Last Week  |  Last Month  |
    ^              ^                ^              ^           <- stopps here

Здесь | Now | имеет меньшую ширину, чем | Yesterday evening |. При перелистывании этих значений прокрутка должна останавливаться в центре соответствующего значения.

Это возможно?


person Florian L.    schedule 23.02.2011    source источник
comment
См. Мой ответ на этот вопрос: stackoverflow.com/a/10993426/60488   -  person Johan Kool    schedule 12.06.2012


Ответы (1)


это конечно возможно, но не так автоматически ...

Я думаю, вам следует реализовать метод протокола UIScrollViewDelegate:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

}

это метод, вызываемый, когда пользователь перестает перемещать палец по scrollView, вы можете проверить внутри него координаты вашего контента:

yourScrollView.contentOffset

а затем проверьте, какой из ваших page.x (зарегистрируйте их в массиве при их создании или проверьте происхождение всего вашего представления, добавленного в scrollView), ближе к нему, затем перейдите к offSet вашей страницы (с анимацией ) вызов:

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
person meronix    schedule 23.02.2011
comment
Спасибо, meronix, это именно то, что я искал! Несколько дополнительных советов: - UIScrollView.pagingEnabled должен быть установлен на NO - Мне также пришлось реализовать метод протокола UIScrollViewDelegate: - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView - person Florian L.; 24.02.2011
comment
для лучшего результата я закончил реализацию метода - scrollViewWillBeginDecelerating:(UIScrollView *)scrollView - person darune; 30.11.2011