Как реализовать циклический UIScrollView? - PullRequest
4 голосов
/ 06 августа 2010

Как реализовать циклический UIScrollView?То есть, когда вы прокрутите до самого левого элемента, UIScrollView покажет самый правый.Любая помощь будет признательна.

1 Ответ

5 голосов
/ 06 августа 2010

Конечно, вам нужно три вида. В любой момент у вас есть вид слева, вид справа и текущий вид.

Это требует уведомления о каждом перемещении через UIScrollViewDelegate.

Если вы обнаружите, что вы двигались вправо, вы освобождаетесь влево, делаете left = current, current = right и делаете новое right.

Если вы обнаружите, что вы двигались влево, вы освобождаетесь вправо, делаете право = текущее, текущее = влево и делаете новое левое.

Вообще говоря, любое представление, которое находится на расстоянии более одной страницы от текущего, не требуется. Таким образом, вам нужно всего три страницы.

Конечно, вам также нужно манипулировать положением UIScrollView, чтобы вы могли совершать движения - в результате вы не двигаетесь, хотя похоже, что у вас есть. Когда вы сделали прокрутку и изменили представления в соответствии с левым / текущим / правым перемешиванием - вы делаете

  [self scrollRectToVisible:(middle frame) animated:NO];

так что вы всегда смотрите на одну и ту же реальную страницу, по одной странице с каждой стороны. Когда происходит прокрутка, похоже, что пользователь может продолжать прокручивать в цикле - но после того, как каждая страница переворачивается, представления перетасовываются, позиция в представлении прокрутки возвращается к середине, и пользователь может снова прокручивать.

Возвращение к началу - это просто вопрос использования представления, связанного с любым объектом, находящимся на другом конце любой структуры данных, которую вы используете - так что если current = [(NSArray)data lastObject], то right = [(NSArray)data objectAtIndex:0].

...