如何在使用reloadData时执行单元格选择动画?

时间:2015-06-21 17:20:22

标签: ios objective-c cocoa-touch uicollectionview

我有UICollectionView,我在setSelected子类中覆盖UICollectionViewCell,以便在用户选择单元格时执行一点反弹动画。

问题在于,在选择细胞时,细胞的选择会改变其他细胞的数据(例如,想象其他细胞在每个细胞中都有一个标签,其中显示了所选细胞的数量)。所以我调用collectionView.reloadData()以便所有其他单元格也更新以显示新数据(例如,标签中选择的单元格数量)。

但是,此reloadData()调用似乎完全重置了UICollectionView。发生的任何动画都会停止,单元格只会在没有动画的情况下更新。

如何让细胞选择动画,同时更新其他细胞?

我已经尝试在动画完成后调用reloadData(),但这使得它看起来更新其他单元格的延迟/延迟(因为它没有更新直到动画结束后的那一刻,它们看起来并不是很好。

同样,我尝试调用reloadItemsAtIndexPaths:(并排除将设置动画的选定单元格),但无论出于何种原因,对于集合视图,此方法似乎真的慢。就像压下它后显着的滞后量一样。

我应该在这做什么?在没有集合视图破坏正在进行的动画的情况下重新加载数据的标准是什么?

1 个答案:

答案 0 :(得分:1)

重新加载会丢弃现有单元格并创建(或重新使用)新单元格。所以任何动画都会被破坏。所以,不要重装。

相反,像往常一样更新您的数据模型,然后获取当前可见的索引路径和关联的单元格,并直接更新这些单元格。