6

我有scrollview5个宽度为 88 的图像视图

我想要scrollview滚动到每个图像视图(不是分页)

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

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

4

7 回答 7

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. 就是这样。
于 2013-10-31T12:57:29.853 回答
8

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

于 2012-08-08T10:41:44.527 回答
4

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

我还考虑过插入过渡和禁用滚动,使其变得像幻灯片,但任何一种方式都应该有效。

于 2012-08-08T10:40:30.517 回答
1

这是我曾经这样做的解决方案的简短说明。

假设您有从 0 到 9 的计数器,然后,当您进行转换 9 -> 0 时,您实际上在 9 之后(在滚动视图中)欺骗了另一个 0(称为 0'),将动画转换为 0',而不是使非动画即时过渡到位于 scrollView 顶部的 0。

于 2012-08-08T10:41:35.713 回答
0

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

于 2013-10-30T08:32:48.580 回答
0

对于其他寻找解决方案的人,您也可以在https://github.com/Seitk/InfiniteScrollPicker/上尝试这个库 Infinite Scroll Picker,它基本上是拖放。我在一个项目中使用它,效果很好。

于 2014-01-31T19:13:14.563 回答
0

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

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

于 2014-09-18T10:37:52.483 回答