可能重复:
UIScrollView. Any thoughts on implementing “infinite” scroll/zoom?
我有一个UIScroll,它有八个左右的页面。我的目标是让他们“循环”,以便当用户到达最后一页时,第一页将是下一页(反之亦然),以便用户可以无休止地滚动页面。实现这一目标的最佳方法是什么?
我正在使用来自Cocoa with Love的example。
非常感谢任何帮助。谢谢。
答案 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方法上快速滚动时可能遇到的最后一页或第一页。