如何在iPhone中制作无限滚动视图?

时间:2012-08-08 10:34:07

标签: iphone objective-c ios ios5

我有scrollview 5张图片,宽度为88

我希望scrollview滚动到每个图片视图(不分页)

我想在iPhone中无限滚动视图,这意味着当它滚动到最后一项时,它会显示它旁边的第一个项目..

我一直尝试偏移,但是当它移动偏移时停止并且我使用了苹果街道滚动器,这不允许我停止中心的每个元素(就像Picker视图一样)..

7 个答案:

答案 0 :(得分:9)

首先,我建议使用UITableView,这样可以保持较低的内存使用率。我在项目中成功使用的方法如下:

    1。列表项

复制细胞的内容,我的意思是如果你有这样的5个项目:

| 1 | 2 | 3 | 4 | 5 |

你应该在表的末尾添加相同的(在具有可重用引擎的表视图中,这不是什么大不了的事),看起来像这样:

| 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |

    2。使用以下内容修改scrollViewDidScroll:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == _yourScrollView) {
        CGFloat currentOffsetX = scrollView.contentOffset.x;
        CGFloat currentOffSetY = scrollView.contentOffset.y;
        CGFloat contentHeight = scrollView.contentSize.height;

        if (currentOffSetY < (contentHeight / 6.0f)) {
            scrollView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
        }
        if (currentOffSetY > ((contentHeight * 4)/ 6.0f)) {
            scrollView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
        }
    }
}

如果几乎​​达到滚动的最后一个,上面的代码会将滚动位置移到顶部;或者,如果你几乎处于最顶层,那么就把你移到最底层......

    3。就是这样。

答案 1 :(得分:8)

您可以查看以下两个选项之一:

答案 2 :(得分:4)

长期以来,这给我带来了严重的问题,所以我真的感受到了你的痛苦。我发现这个控件可以解决你的问题:http://www.cocoacontrols.com/platforms/ios/controls/infinitescrollview

我还考虑过插入转换和禁用滚动,因此它就像幻灯片放映,但无论哪种方式都应该有效。

答案 3 :(得分:1)

以下是我过去使用的解决方案的简短说明。

让我们说你有0到9的反击,然后,当你进行过渡9 - &gt; 0,你实际上在9之后(在scrollView中)欺骗另一个0(称之为0'),将动画过渡到0',然后使非动画瞬间过渡到0,它位于scrollView之上。

答案 4 :(得分:0)

您可以使用 iCarousel 库。 https://github.com/nicklockwood/iCarousel

答案 5 :(得分:0)

对于寻找解决方案的其他人,你也可以在https://github.com/Seitk/InfiniteScrollPicker/尝试这个库无限滚动选择器它基本上是拖放。我在项目中使用它并且效果很好。

答案 6 :(得分:0)

在这个迷你项目中实现了一个简单的无限滚动:

https://github.com/mcmatan/Infinity-tabBar-scroll-view/blob/master/README.md