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

Animation 设置UICollectionViewCell动画:同时滚动到并调整大小,animation,uikit,uicollectionview,uicollectionviewcell,uicollectionviewlayout,Animation,Uikit,Uicollectionview,Uicollectionviewcell,Uicollectionviewlayout,我试图让UICollectionViewCell进行动画调整,同时让集合视图将单元格滚动到集合视图视口的顶部 当我这样做的时候 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:

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

当我这样做的时候

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

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

如果我在performbatchUpdate中调用scrollToItemAtIndexPath,比如

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    [collectionView performBatchUpdates:^{
        [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
    } completion:nil];
}
它大部分时间都不起作用

谢谢


-Eric

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

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