Вопрос по ios, iphone – UIScrollView с «круговой» прокруткой

12

Я пытаюсь сделать "Циркуляр" прокрутка в моем UIScrollView, но безуспешно.

Что я хочу сделать: если uiscrollview достигает конца, он должен перейти в начало если uiscrollview при запуске и движении назад, он должен двигаться до конца

Добавление прокрутки в моей ситуации не очень хорошо (другие методы должны получить "идентификатор страницы")

У тебя есть идеи?

используйте свойство прокрутки. Я понимаю, о чем вы спрашиваете. vishiphone
какое свойство? werbary
Теперь у меня есть поиск, который я использовал, что в моем проекте, я думаю, вы хотите, чтобы левая и правая стороны одно изображение и задняя сторона также одно изображение, и оно вращается как горизонтальный круг. vishiphone

Ваш Ответ

3   ответа
4

Уличный скроллер демо, которое, кажется, имеет именно то, что вы хотите.

Есть такжевидео с WWDC 2011, который демонстрирует их демо. ;) Они покрывают бесконечную прокрутку первыми в видео.

Я посмотрю, спасибо. werbary
+1 Хорошо, но он не работает с пейджингом, по крайней мере, не из коробки. Я попытался включить пейджинг, но кадр кажется больше, чем дисплей. Может быть, с некоторыми корректировками.
@ Kai Это на самом деле не предназначено для пейджинга, и я не уверен, что OP на самом делеwants пейджинг. Я знаю, что он включен, но бесконечная прокрутка! Исходя из его вопроса, это больше похоже на игру с боковой прокруткой, чем на бесконечный поток прикрытия. Если это на самом деле пейджинг, вы можете просто использовать демонстрацию Apple для загрузкиUIPageControl и просто измените код, чтобы использовать остаточную математику, когда вы находитесь за пределами вашей фактической индексной зоны.
0

Sample code..

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender 
    {

        if (scrollView.contentOffset.x == 0) {
            // user is scrolling to the left from image 1 to image n(last image).
            // reposition offset to show image 10 that is on the right in the scroll view
            [scrollView scrollRectToVisible:CGRectMake(4000,0,320,480) animated:NO];// you can define your `contensize` for scrollview
        }
        else if (scrollView.contentOffset.x == 4320) {
            // user is scrolling to the right from image n(last image) to image 1.
            // reposition offset to show image 1 that is on the left in the scroll view
            [scrollView scrollRectToVisible:CGRectMake(320,0,320,480) animated:NO];
        }
    }

Надеюсь, что это поможет вам...

Как, в частности, код решает проблему спрашивающего?
Это не работает werbary
Выше код должен работать, но я не понимаю, почему он не работает. чем после посещения этого URL. Он также содержит пример кода & gt; & gt;mobiledevelopertips.com/user-interface/… ...
39

requires paging enabled, Предположим, у вас есть пять элементовA,B,C,D and E, Когда вы настраиваете представление, вы добавляете последний элемент в начало и первый элемент в конец и корректируете смещение содержимого для просмотра первого элемента, например, так:E,[A],B,C,D,E,A, В UIScrollViewDelegate проверьте, достигает ли пользователь какой-либо из концов, и переместите смещениеwithout анимация на другом конце.

Представьте, что [] указывает на отображаемый вид:

E,A,B,C,[D],E,A

Пользователь проводит пальцем вправо

E,A,B,C,D,[E],A

Пользователь проводит пальцем вправо

E,A,B,C,D,E,[A]

Затем автоматически установите смещение содержимого для второго элемента

E,[A],B,C,D,E,A

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

E,A,[B],C,D,E,A

Update

Я загрузилcomplete implementation этого алгоритма. Это очень сложный класс, потому что он также имеет выбор по нажатию, бесконечную круговую прокрутку и повторное использование ячеек. Вы можете использовать код как есть, изменить его или извлечь нужный код. Самый интересный код в классеTCHorizontalSelectorView.

Link to the file

Наслаждайся этим!

Update 2

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

отличная идея!! +1
В моем представлении прокрутки включена подкачка werbary
Какое событие я должен использовать, чтобы перейти от последнего элемента ко второму?
Спасибо, это прекрасное решение. werbary
Тогда это будет работать для вас.

Похожие вопросы