我有一个UIScrollView
图像。当用户到达最后一张图像并滑动手指以查看下一张图像时,我想显示第一张图像。同样,当用户在第一张图像并滑动前一张图像时,我想显示最后一张图像。简而言之,这将是一个循环的东西。
我该如何实施?
我有一个UIScrollView
图像。当用户到达最后一张图像并滑动手指以查看下一张图像时,我想显示第一张图像。同样,当用户在第一张图像并滑动前一张图像时,我想显示最后一张图像。简而言之,这将是一个循环的东西。
我该如何实施?
您需要使用 contentOffset 和 contentSize。
每次有滚动事件时,您可以考虑检查用户是否处于说 currentLength - 1,如果是,则将图像动态添加到滚动视图。
这应该适用于 5,但如果您不发布早期图像,可能会给您带来内存方面的麻烦。
我认为此解决方案不适用于索引小于 0 的图像。
或者...假设您有图像 I1 到 I5。使用以下图像布局滚动视图: I5 I1 I2 I3 I4 I5 I1
自动滚动到 I1(I5 的高度),没有动画。
如果用户滚动到此标记之上,则将它们(无动画)自动滚动到第二个 I5 I1 对。如果用户试图在接近尾声的 I5 下方滚动,您可以将它们自动滚动回第一个 I5 I1 对。如果您在没有动画的情况下滚动并滚动到正确的高度,则会显示图像是无穷无尽的。
我不确定这是否会非常敏感,但它可能会产生您正在寻找的效果。
要实现的关键是 UIScrollView 对它重绘的内容非常智能。
您可以移动其子视图,只要屏幕上可见的视图不移动或更改,就不会重绘。您可以重置任何屏幕外子视图的框架(并在必要时调整 contentOffset)而不会导致重绘。
当然,启用分页会使这更容易,但我相信你也可以从 didScroll 做到这一点。
您应该生成 5 个视图,将它们添加为子视图,并将滚动视图的偏移量设置为五个视图的中心。随着 scrollView 滚动,您可以切换子视图 - 就像循环一样。无需删除并重新添加子视图,您只需重置框架即可。
这(在简单的层面上)也是 UITableView 的工作方式——它重用了一小部分单元格视图并不断重置内容偏移量。