我希望循环一个UIScrollView,但不是大多数循环浏览视图列表的方式,只是一个滚动浏览一个子视图,但是无缝循环。
基本上,我正在尝试制作一个地图视图,我可以放大和缩小,并继续滚动。
任何人都有任何提示?
答案 0 :(得分:4)
前一段时间我正在玩同样的问题,并且一起攻击了一个解决方案的快速演示。我不确定地图视图是否会更容易或更难管理。
https://github.com/jonah-carbonfive/WrappingScrollView
以下是我正在做的事情,以防代码中不清楚。
-scrollViewDidScroll:
委托方法中,检查您的平铺视图是否已完全滚动,如果是,则重新定位滚动视图的内容偏移以重新定位内容视图,以便平铺视图返回到中间位置可见区域。如果操作正确,用户就不会注意到您从查看平铺视图的图像跳回到平铺视图本身。-hitTest:withEvent:
来重新定位切片视图以取代用户在调用super
之前尝试触摸的任何图像视图。现在所有的触摸都会到达平铺视图。这有点疯狂,但它让我将任意交互式UIViews和UIControl扔进一个容器中,让它们从一侧包裹起来,然后再回到另一侧。
老实说,这可能不是一个很好的解决方案。如果我知道我想要绘制一个可以包裹一个或多个维度的地图,我会将地图分成许多图块。像UIScrollView一样检测某些容器视图上的触摸,并在用户移动触摸时重新定位切片。当瓷砖滚出视线并重新使用它们以显示地图的新可见区域时移除瓷砖。 在一个简单的例子中,您可以仅使用地图图像的两个副本来实现此功能。在一个复杂的情况下,你正在重新创建UIScrollView的大部分内容;缩放您显示的图块,并可能以不同的分辨率加载不同的图块集,以减少内存使用并在缩放时提高分辨率。