Пейджинг UIScrollView с различной шириной страницы - PullRequest
17 голосов
/ 23 февраля 2011

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

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

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

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

Возможно ли это?

1 Ответ

13 голосов
/ 23 февраля 2011

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

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

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

}

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

yourScrollView.contentOffset

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

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
...