iOS7 UICollectionView如何使用动画将单个单元格移动到不同的部分?

时间:2014-07-23 00:46:10

标签: ios objective-c animation ios7 uicollectionview

我有一个应用程序,其中包含用户可以阅读的文章列表。一旦用户点击文章,我想将其呈现给用户,然后动画将表示文章的单元格移动到不同的集合视图部分,表示阅读文章:

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) {

    }];

}

1 个答案:

答案 0 :(得分:0)

你看过-moveItemAtIndexPath:toIndexPath:了吗?听起来这确实提供了您正在寻找的东西。

您似乎正在更改支持集合视图的数据,然后依靠-reloadSections:更新UI。毫不奇怪,重新加载该部分中的每个单元格。由于您确切知道自己已执行了哪些更改,因此至少可以使用-deleteItemsAtIndexPaths:-insertItemsAtIndexPaths:来准确指出您删除并重新插入此图片的位置。