圆形UIScrollView

时间:2009-04-05 11:09:44

标签: iphone objective-c uiscrollview

我有UIScrollView的图片。当用户到达最后一个图像并用手指滑动下一个图像时,我想显示第一个图像。同样,当用户处于第一张图像并滑动上一张图像时,我想显示最后一张图像。简而言之,它将是一种循环的东西。

我该如何实现?

2 个答案:

答案 0 :(得分:6)

您需要使用contentOffset和contentSize。

每次有滚动事件时,您可以考虑检查用户是否在说currentLength - 1,如果是,则动态地将图像添加到滚动视图。

这应该适用于5岁,但如果你不发布早期的图像,可能会让你在内存方面遇到麻烦。

我认为此解决方案不适用于低于索引0的图像。

...可替换地 让我们说你有I1到I5的图像。 使用以下图像布局滚动视图: I5 I1 I2 I3 I4 I5 I1

自动滚动到I1(I5的高度),没有动画。

如果用户滚动到此标记上方,则将它们(无动画)自动滚动到第二个I5 I1对。 如果用户试图在接近结尾的I5下滚动,您可以将它们自动滚动回第一个I5 I1对。 如果滚动时没有动画,并且滚动到正确的高度,则会显示图像无穷无尽。

我不确定这是否会非常敏感,但它可能会产生您正在寻找的效果。

答案 1 :(得分:2)

要意识到的关键是UIScrollView对于重绘的内容非常聪明。

您可以移动其子视图,只要屏幕上显示的视图不移动或更改,就不会重绘。您可以重置任何屏幕外子视图的帧(如果需要,可以调整contentOffset),而不会重绘。

当然,启用分页会让这更容易,但我相信你也可以从didScroll做到这一点。

您应该生成5个视图,将它们添加为子视图,并将滚动视图的偏移设置为五个视图的中心。在scrollView滚动时,您可以切换子视图 - 就像循环一样。无需删除和重新添加子视图,您只需重置帧即可。

这是(在一个简单的层面上)UITableView的工作原理 - 它重用了一小组单元格视图并不断重置内容偏移量。