【问题标题】:Looping through all cells in UICollectionView遍历 UICollectionView 中的所有单元格
【发布时间】:2013-04-05 09:33:03
【问题描述】:

我有一个UICollectionView,我想为每个单元格添加动画。

目前我正在使用

for(UICollectionView *cell in collectionView.visibleCells){
  //add animation to cell here
}

但这只会将动画应用于可见单元格,一旦我向下滚动并且单元格不再可见,动画就会停止。

如何循环遍历UICollectionView 中的所有单元格?

【问题讨论】:

  • 我正在尝试实现类似的目标。但我在可见单元格中得到零个项目。这个数组在什么时候被填充?

标签: ios ios6 uicollectionview uicollectionviewcell


【解决方案1】:

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

设置属性后,只重新加载visibleCells:[collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems]

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

【讨论】:

  • 哇,这太棒了,而且效果很好,非常感谢 :)
  • 嗨,一个(愚蠢的)问题。 reloadItemsAtIndexPaths 是否在检查属性后进入同一个 collectionView:cellForItemAtIndexPath: ?
  • 不,例如,将它放在处理程序中以进行按钮按下。将它放在collectionView:cellForItemAtIndexPath: 中会将您的代码置于循环中。不推荐。
  • 为了清楚起见,您需要在集合中用作集合视图数据源的对象上设置属性。