使UIScrollView环绕

时间:2010-06-18 16:56:28

标签: iphone cocoa-touch uikit uiscrollview

  

可能重复:
  UIScrollView. Any thoughts on implementing “infinite” scroll/zoom?

我有一个UIScroll,它有八个左右的页面。我的目标是让他们“循环”,以便当用户到达最后一页时,第一页将是下一页(反之亦然),以便用户可以无休止地滚动页面。实现这一目标的最佳方法是什么?

我正在使用来自Cocoa with Love的example

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:20)

问题现在排序了。基本上,我在页面之前和之后创建了额外的页面,所以看起来像这样:

  

8 1 2 3 4 5 6 7 8 1

然后在scrollViewDidEndDecelerating我做了一个简单的if语句,检查我是在第一页还是最后一页并正确找到scrollView

- (void)scrollViewDidEndDecelerating:(UIScrollView *)newScrollView
{
    [self scrollViewDidEndScrollingAnimation:newScrollView];
    pageControl.currentPage = currentPage.pageIndex;

    if(currentPage.pageIndex==0){
        scrollView.contentOffset = CGPointMake(320*(pageControl.numberOfPages-2), 0);
        pageControl.currentPage = pageControl.numberOfPages-2;
    }else if(currentPage.pageIndex==pageControl.numberOfPages-1){
        scrollView.contentOffset = CGPointMake(320, 0);
        pageControl.currentPage = 1;
    }

}

答案 1 :(得分:3)

对于其他任何试图解决此问题的人,我建议您查看Apple的视频,其中包括无限滚动教程和包装: https://developer.apple.com/videos/wwdc/2011/

以及示例代码: https://developer.apple.com/library/ios/#samplecode/StreetScroller/Introduction/Intro.html

我目前正在使用“8 1 2 3 4 5 6 7 8 1”方法并且还没有尝试实现视频中描述的方法,但它似乎可以防止小的“反弹”在8 1 2 ... 1方法上快速滚动时可能遇到的最后一页或第一页。