是否有可能作为一个单位缩放UICollectionView?

我们最近的项目中有一个关卡地图视图。 它包括水平标记作为UICollectionViewCells和各种UICollectionReusableViews乐趣装饰。

我们希望能够放大/缩小(这是一个大的地图)。 我曾希望我可以使用内部的UIScrollView来做到这一点,但是,你不能放大自己…只有一个子视图。

无论如何,要做到这一点,除了单独缩放和重新放置每个元素,因为我缩放? 感觉它应该是一个普通的东西,因此是一个更“内置”的解决scheme。

你有没有想过在UIScrollView中embeddedUICollectionView? 这听起来有点简单,但我跑了类似的问题,尝试了这一点,是的,它的工作。

您必须将UICollectionView的框架设置为自己的上下文大小(从您的UICollectionViewLayout调用collectionViewContentSize),因此collectionView不再滚动。 它也禁用了所有的单元重用的东西,所以这可能不是你想要的。 但另一方面,有些用例比较便宜,速度更快,事先提供了所有的视图,而不必调用dequeueReusableCellWithReuseIdentifier:每次滚动。 也许你的地图应用程序可以从这样的事情中受益。

我确信有更复杂的解决scheme可能,其中外滚动视图只做缩放和集合视图负责滚动。 也许子类化UIScrollView并返回为panGestureRecognizer零可以工作,但这只是一个猜测。