我正在使用以下动画来翻转UICollectionViewCell以显示确认视图"在背面"细胞:
[UIView transitionFromView:cell.cellContentWrap
toView:cell.confirmationView
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromRight
completion:^(BOOL finished){
}
];
当我完成后,我注意到集合视图中的每8个单元格也都显示了确认视图。心灵狂欢。关于为什么会这样的想法?我尝试在集合视图上调用reloadData,并为该单元格重新调整ItemItIndexPaths ...我对UICollectionViews / UICollectionViewCells和/或它们相应的动画有什么遗漏?
答案 0 :(得分:3)
我对集合视图的工作并不多,但它们使用与表视图相同的单元重用设计。
当收集单元格在屏幕外滚动时,它会被放入重用队列中供以后使用。然后,当系统需要一个新的集合视图单元时,如果有一个可用,它会从重用队列中抽出一个并使用它而不是创建一个新的。
如果您已经使用单元格的视图层次结构,那么这些更改将会持续存在。每当该单元格是从重用队列中拉出的单元格时,它就会切换它的视图。
在您的collectionView:cellForItemAtIndexPath:
方法中,致电后
dequeueReusableCellWithReuseIdentifier:forIndexPath:
,你应该强制它的视图层次结构恢复到默认状态(切换子视图,所以显示单元格的cellContentWrap视图而不是它的confirmView,但没有动画)。