【问题标题】:Is it possible to zoom UICollectionView as a unit?是否可以将 UICollectionView 作为一个单元进行缩放?
【发布时间】:2013-10-29 19:25:51
【问题描述】:

我们的最新项目中有一个关卡地图视图。它包括作为 UICollectionViewCells 和各种 UICollectionReusableViews 的关卡标记,用于有趣的装饰。

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

在我缩放时,除了单独缩放和重新定位每个元素之外,还有其他方法吗?感觉它应该是一种常见的东西,因此可以使用更“内置”的解决方案。

【问题讨论】:

  • 您好,您的问题解决了吗?我有同样的问题,谢谢。
  • 我们手动使布局无效并遍历视图层次结构并缩放每个元素。
  • 这里有同样的问题。您能否发布您的解决方案作为此问题的答案,以便其他访问者可以立即识别解决方案?

标签: ios objective-c uiscrollview uicollectionview uicollectionviewlayout


【解决方案1】:

您是否考虑过将 UICollectionView 嵌入到 UIScrollView 中? 听起来有些简单,但是 我遇到了类似的问题,试过了,是的,它奏效了。

您必须将 UICollectionView 的框架设置为它自己的上下文大小 (从您的 UICollectionViewLayout 调用 collectionViewContentSize), 所以 collectionView 不再滚动。 它也禁用了所有单元重用的东西,所以这可能不是你想要的。 但另一方面,也有更便宜、更快的用例, 提前渲染所有视图,而不是调用 dequeueReusableCellWithReuseIdentifier: 随着每一个滚动动作。也许您的地图应用程序可以从中受益。

我相信有更复杂的解决方案可能,其中外部滚动视图 只有缩放和集合视图负责滚动。 也许继承 UIScrollView 并为 panGestureRecognizer 返回 nil 可以工作, 但这只是猜测。

【讨论】:

  • 谢谢,我们确实考虑过这一点,但细胞重复使用是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多