我有一个应用程序,其中包含用户可以阅读的文章列表。一旦用户点击文章,我想将其呈现给用户,然后动画将表示文章的单元格移动到不同的集合视图部分,表示阅读文章:
Unread | Read
0 0 0 0 | X X
下面的代码会导致所有单元格重新加载,看起来所有单元格都以背景颜色闪烁。 我有没有办法让动画从集合视图的一个部分移动到另一个部分?
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
if([collectionView isEqual:self.largeCollectionView])
{
//position the tapped image at the end and animate reload
UIImage* image = largeImages[indexPath.row];
[largeImages removeObjectAtIndex:indexPath.row];
[largeImages addObject:image];
}
[collectionView performBatchUpdates:^{
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
} completion:^(BOOL finished) {
}];
}
答案 0 :(得分:0)
你看过-moveItemAtIndexPath:toIndexPath:
了吗?听起来这确实提供了您正在寻找的东西。
您似乎正在更改支持集合视图的数据,然后依靠-reloadSections:
更新UI。毫不奇怪,重新加载该部分中的每个单元格。由于您确切知道自己已执行了哪些更改,因此至少可以使用-deleteItemsAtIndexPaths:
和-insertItemsAtIndexPaths:
来准确指出您删除并重新插入此图片的位置。