如何从UICollection视图中查找所有不可见的单元格?
在我的应用程序中,我将Timer设置为所有单元格。但是当细胞不可见时,我试图使细胞无效。
答案 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
是否仍然显示