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

时间:2015-05-02 06:51:11

标签: ios

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

在我的应用程序中,我将Timer设置为所有单元格。但是当细胞不可见时,我试图使细胞无效。

2 个答案:

答案 0 :(得分:4)

我可能会以不同的方式解决这个问题。如果您希望单元格设置动画,则可以设置属性shouldAnimate = YES。然后在collectionView:cellForItemAtIndexPath:检查该属性并根据需要应用动画(或删除它)。

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

 [collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems].

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

答案 1 :(得分:4)

请注意,iOS上的CollectionView作为所有列表,会回收其单元格以使用尽可能少的内存(请参阅dequeueReusableCellWithReuseIdentifier:forIndexPath:)。

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

当集合视图需要显示新的viisble视图时,它会在collectionView:cellForItemAtIndexPath:上调用dataSource。在您必须覆盖的此方法中,首先调用dequeueReusableCellWithReuseIdentifier:forIndexPath:以获得可重用的单元格,而不是创建新的单元格。

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

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