在动画物品的高度变化动画时,集合视图上的问题performBatchUpdate

时间:2015-05-18 09:56:54

标签: animation height collectionview

使用performBatchUpdates方法为CollectionViewCell上的高度更改设置动画时出现问题,这会导致在动画运行之前出现在屏幕外的新项目。在这种情况下,最初位于屏幕外的项目会显示在最终位置,而不是在那里进行动画处理。

1 个答案:

答案 0 :(得分:-1)

我发现这个解决方法是为了避免在这个Github页面上出现这种不良行为。

这个技巧是通过在运行动画之前更改CollectionView的高度并将其设置回performBatchUpdate方法的完成块上的原始值来完成的。

这就是代码的样子:

frameUpdate.size.height += kExpandedHeight - kCollapsedHeight;
collectionView.frame = frameUpdate;

[collectionView performBatchUpdates:^{
     _cells[indexPath.item] = @(newHeight);
 } completion:^(BOOL finished) {
     frameUpdate.size.height -= kExpandedHeight - kCollapsedHeight;
     collectionView.frame = frameUpdate;
 }];

有关此变通方法的完整项目示例,请转到Github页面

https://github.com/jpsim/UICollectionView-Animation-Bug

感谢分享JP Simard!