检测iOS UICollectionCell何时离开屏幕

Boa*_*ssi 10 ios uicollectionview uicollectionviewcell uicollectionreusableview

我有一个UICollectionView将图片作为其数据存储区中的元素.

我想将高分辨率pic加载到元素中,只有当它的对应UICollectionViewCell当前显示在屏幕上时.之后,当UICollectionViewCell屏幕关闭时,我想将元素返回UIImage到低分辨率版本.

我的问题是,如何检测UICollectionViewCell屏幕何时关闭?

(我尝试使用该prepareForReuse方法,但我无法预测何时会被调用).

我目前正在使用一段代码,scrollViewDidScroll每次视图滚动时我都会检查self.collectionView.visibleCells以查看哪些单元格已在屏幕上滚动.

这看起来有点开销,我想知道UICollectionViewCell在滚动屏幕的时候是否有自己调用的方法?

Mik*_*ler 28

collectionView:didEndDisplayingCell:forItemAtIndexPath:方法UICollectionViewDelegate应该做你想要的.

  • 只有这个方法的问题是当'collectionView`收到`reloadData`消息时它也被调用 (4认同)

小智 5

来自文档。collectionView:didEndDisplayingCell 在完成显示后立即调用,而不是在它离开屏幕时调用

使用此方法可以检测单元格何时从集合视图中删除,而不是监视视图本身以查看它何时消失