动画UICollectionViewCell:同时滚动到并调整大小

时间:2015-05-11 22:36:09

标签: animation uikit uicollectionview uicollectionviewcell uicollectionviewlayout

我试图让UICollectionViewCell进行动画调整大小,同时让集合视图将单元格滚动到集合视图的视口顶部。

当我这样做时

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
    [collectionView performBatchUpdates:nil completion:nil];
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];

    if (cell.isSelected) {
        return self.collectionView.frame.size;
    }
    else {
        return CGSizeMake(300, 100);
    }
}

滚动在调整大小动画之前发生。

如果我在performBatchUpdates中调用scrollToItemAtIndexPath,如

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    [collectionView performBatchUpdates:^{
        [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
    } completion:nil];
}

它大部分时间都不起作用。

谢谢!

-Eric

1 个答案:

答案 0 :(得分:-1)

实现这样的效果的最佳方法是简单地子类化UICollectionViewFlowLayout并根据所选单元格调整单元格布局属性。