我有scrollview
5个宽度为 88 的图像视图。
我想要scrollview
滚动到每个图像视图(不是分页)
和
我想在 iPhone 中创建一个无限滚动视图,这意味着当它滚动到最后一个项目时,它将在它旁边显示第一个项目..
我一直在尝试通过偏移量,但是当通过偏移量移动它时它会停止,而且我使用了苹果街道滚动器,它不允许我将每个元素停止在中心(就像 Picker 视图一样)..
我有scrollview
5个宽度为 88 的图像视图。
我想要scrollview
滚动到每个图像视图(不是分页)
和
我想在 iPhone 中创建一个无限滚动视图,这意味着当它滚动到最后一个项目时,它将在它旁边显示第一个项目..
我一直在尝试通过偏移量,但是当通过偏移量移动它时它会停止,而且我使用了苹果街道滚动器,它不允许我将每个元素停止在中心(就像 Picker 视图一样)..
首先,我建议使用 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)));
}
}
}
如果您几乎到达滚动的最后,上面的代码将滚动位置移动到顶部;或者,如果您几乎在顶部,则将您移至底部...
您可以查看以下两个选项之一:
这给我带来了很长一段时间的严重问题,所以我真的感受到了你的痛苦。我发现这个控件应该可以解决你的问题: http: //www.cocoacontrols.com/platforms/ios/controls/infinitescrollview
我还考虑过插入过渡和禁用滚动,使其变得像幻灯片,但任何一种方式都应该有效。
这是我曾经这样做的解决方案的简短说明。
假设您有从 0 到 9 的计数器,然后,当您进行转换 9 -> 0 时,您实际上在 9 之后(在滚动视图中)欺骗了另一个 0(称为 0'),将动画转换为 0',而不是使非动画即时过渡到位于 scrollView 顶部的 0。
您可以为此使用iCarousel库。 https://github.com/nicklockwood/iCarousel
对于其他寻找解决方案的人,您也可以在https://github.com/Seitk/InfiniteScrollPicker/上尝试这个库 Infinite Scroll Picker,它基本上是拖放。我在一个项目中使用它,效果很好。
在这个迷你项目中实现了一个简单的无限滚动:
https://github.com/mcmatan/Infinity-tabBar-scroll-view/blob/master/README.md