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 10 GM 嵌入 UITableView 和 UICollectionView contentSize 错误且滚动指示器不显示