我有scrollview
5张图片,宽度为88 。
我希望scrollview
滚动到每个图片视图(不分页)
和
我想在iPhone中无限滚动视图,这意味着当它滚动到最后一项时,它会显示它旁边的第一个项目..
我一直尝试偏移,但是当它移动偏移时停止并且我使用了苹果街道滚动器,这不允许我停止中心的每个元素(就像Picker视图一样)..
答案 0 :(得分:9)
首先,我建议使用UITableView,这样可以保持较低的内存使用率。我在项目中成功使用的方法如下:
复制细胞的内容,我的意思是如果你有这样的5个项目:
| 1 | 2 | 3 | 4 | 5 |
你应该在表的末尾添加相同的(在具有可重用引擎的表视图中,这不是什么大不了的事),看起来像这样:
| 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |
-(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)));
}
}
}
如果几乎达到滚动的最后一个,上面的代码会将滚动位置移到顶部;或者,如果你几乎处于最顶层,那么就把你移到最底层......
答案 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