为 UICollectionViewCell 设置动画:同时滚动到并调整大小
Posted
技术标签:
【中文标题】为 UICollectionViewCell 设置动画:同时滚动到并调整大小【英文标题】:Animating a UICollectionViewCell: Scroll To And Resize At The Same Time 【发布时间】:2015-05-11 22:36:08 【问题描述】:我正在尝试让 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];
它大部分时间都不起作用。
谢谢!
-埃里克
【问题讨论】:
【参考方案1】:实现这种效果的最佳方法是简单地继承 UICollectionViewFlowLayout 并根据所选单元格调整单元格布局属性。
【讨论】:
以上是关于为 UICollectionViewCell 设置动画:同时滚动到并调整大小的主要内容,如果未能解决你的问题,请参考以下文章
为 UICollectionViewCell 设置动画:同时滚动到并调整大小
为 UICollectionView 中的所有 UICollectionViewCell 设置动画
以编程方式将 UICollectionViewCell 宽度设置为 UICollectionView 宽度