我试图让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
答案 0 :(得分:-1)
实现这样的效果的最佳方法是简单地子类化UICollectionViewFlowLayout并根据所选单元格调整单元格布局属性。