滚动 UICollectionView 时保留 UICollectionViewCell
Posted
技术标签:
【中文标题】滚动 UICollectionView 时保留 UICollectionViewCell【英文标题】:Retaining UICollectionViewCell while scrolling a UICollectionView 【发布时间】:2014-12-01 06:13:55 【问题描述】:我正在尝试找出一种方法来防止 UICollectionViewCell 在其原始滚动位置从视图中滚动时从我的 UICollectionView 中移除 (didEndDisplayingCell)。我知道这是 UICollectionView 应该工作的方式,当它们不再可见时,单元格被删除并返回到重用池,但这是基于它们在 UICollectionView 中的原始位置。我试图将该单元格拖过原始可见区域到更远的位置,但是一旦其原始位置滚动到视图之外,它就会被删除,从而终止正在进行的平移手势并终止其在集合视图中的视图。有没有办法覆盖此行为并保留 UICollectionViewCell 直到我完成它?
我已经看到了通过创建单元格图像并拖动它来解决此问题的其他方法,但这不能满足我的目的。当我滚动 UICollectionView 时,我需要原始单元格在其原始屏幕位置之外继续存在。
【问题讨论】:
【参考方案1】:拖动单元格时复制并隐藏原始单元格。
【讨论】:
复制单元格变得有些复杂,只是因为一旦单元格永久移动到新位置,我必须将复制单元格的子视图返回到原始位置。该单元格正在显示我想在移动它时以及它到达新位置时继续的实时更新。关于如何最好地做到这一点的任何建议? 您可以使用简单的initWithFrame:
创建单元格,最后它只是一个 UIView,手动提供框架,因为单元格不再由集合视图处理,而是由您的控制器处理。您可以从原始单元格复制框架。当然,当单元格到达最终位置时,您可以通过删除原始单元格并插入新单元格来为集合视图中的更改设置动画。
我看不出你会弄乱子视图的原因。因为您可以简单地在新单元格和拖动单元格上设置模型中的数据。以上是关于滚动 UICollectionView 时保留 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 单元格不保留数据 --- 如何使它们的数据持久化?
为啥 UICollectionView 不滚动其中的 UIButtons?
UICollectionView 在滚动后显示错误的单元格 - 出队问题?