IOS UICollectionView 和 UIScrollView 回收问题

Posted

技术标签:

【中文标题】IOS UICollectionView 和 UIScrollView 回收问题【英文标题】:IOS UICollectionView and UIScrollView recycling issue 【发布时间】:2015-04-10 19:46:28 【问题描述】:

我正在从事的 ios 项目遇到“类似回收”的问题。 (我说的是类似回收的问题,因为它让我想到了我在 android 项目中遇到的回收问题)。

我有一个带有 UICollectionViewCell 的 UICollectionView。每个 UICollectionViewCell 都包含一个 UIScrollView 和一个 UIImageView 在里面,以便能够缩放/平移 UIImageView。

我遇到的问题是,当我缩放 UIImageView(我们称之为 UIImageView Bob)然后以 Bob 在屏幕上不可见的方式滚动 UICollectionView,然后回滚 UICollectionView 以使 Bob 可见,有时缩放应用到 UICollectionView 的另一个 UICollectionCellView 并且 Bob 不再缩放,有时 Bob 被正确缩放。

知道问题可能是什么吗?

谢谢

【问题讨论】:

【参考方案1】:

UICollectionView 数据源委托回收单元格视图以提高性能。因此,如果您有一个 imageView1 缩放为 2.0 的单元格,并且假设一个带有 imageView15 的单元格被渲染,UICollectionView 将尝试使用 imageView1 再次回收该单元格,缩放为 2.0。您需要做的是每次在此函数中呈现单元格时重置缩放- collectionView:cellForItemAtIndexPath:

如果你想让它记住缩放,最简单的方法是创建一个 NSMutableArray 并在每次调用 - collectionView:didEndDisplayingCell:forItemAtIndexPath: 时将缩放存储为 NSNumbers。然后,当调用- collectionView:cellForItemAtIndexPath: 时,从数组中加载缩放。

【讨论】:

以上是关于IOS UICollectionView 和 UIScrollView 回收问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发-UI Collection

UICollectionView基本使用和常用代理方法解释

iOS——UICollectionView

UICollectionView 不加载-iOS

iOS 10 GM 嵌入 UITableView 和 UICollectionView contentSize 错误且滚动指示器不显示

iOS 7 中 UICollectionView 中不需要的垂直滚动