Ios 如何从uicollection视图中查找所有不可见的单元格?

Ios 如何从uicollection视图中查找所有不可见的单元格?,ios,Ios,如何从UICollection视图中查找所有不可见的单元格 在我的应用程序中,我将计时器设置为所有单元格。但我试图在细胞不可见的情况下使细胞为零。我可能会用另一种方式来实现这一点。如果希望单元格设置动画,可以设置属性shouldAnimate=YES。然后在集合视图中:cellForItemAtIndexPath:检查该属性,并在需要时应用动画(或将其删除) 设置属性后,仅重新加载VisibleCell: [collectionView reloadItemsAtIndexPaths:coll

如何从UICollection视图中查找所有不可见的单元格


在我的应用程序中,我将计时器设置为所有单元格。但我试图在细胞不可见的情况下使细胞为零。

我可能会用另一种方式来实现这一点。如果希望单元格设置动画,可以设置属性
shouldAnimate=YES
。然后在
集合视图中:cellForItemAtIndexPath:
检查该属性,并在需要时应用动画(或将其删除)

设置属性后,仅重新加载VisibleCell:

 [collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems].

现在,由于动画是在通过数据源协议请求单元格时提供的,因此您在滚动时也会获得动画。

请注意,iOS上的CollectionView与所有列表一样,循环使用其单元格以使用尽可能少的内存(请参见
dequeueReusableCellWithReuseIdentifier:forIndexPath:

因此,当一个单元格变得不可见时(当然是因为集合视图正在滚动),它将进入可重用队列,并且很快将被重新用于新可见的单元格,因为集合视图正在滚动

当集合视图需要显示新的可视视图时,它将在其
数据源上调用
集合视图:cellForItemAtIndexPath:
。在这个必须重写的方法中,首先调用
dequeueReusableCellWithReuseIdentifier:forIndexPath:
来拥有一个可重用的单元格,而不是创建一个新的单元格

如果前一个单元格可用,则应停止其计时器并为其新内容重新启动一个新单元格

否则,您可以管理控制器上与其
IndexPath
关联的全局计时器列表,并且当计时器启动时,使用
indexPathsForVisibleItems
验证其关联的
IndexPath
是否仍然显示