ios - 缩小单元格框架与放大框架不同

标签 ios animation uicollectionview

使用以下代码更改单元格的框架,然后为更改设置动画。

   if (_new_h == 200){
        _new_h = 70;
    }
    else{
        _new_h = 200;
    }

    CustomCell *cell = (CustomCell*)[self.collectionView cellForItemAtIndexPath:indexPath];

    [self.collectionView performBatchUpdates:^{
        cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, _new_h);
    } completion:nil];

当增加框架的高度时,动画可以正常工作。 当将其减小到原始大小时,单元格的动画很笨拙,快速减小高度,没有动画,但 collectionview 的其余部分动画变化

enter image description here

为什么只有在降低高度时才会发生这种情况?

最佳答案

看看你的 gif,当你放大单元格时,它几乎看起来可能会发生同样的问题(即,背景首先扩大,然后其余内容随之而来)。是的,在第 5 帧中,背景颜色已经消失。

调整大小 UICollectionViewCells ,你通常不会在 sizeForItemAtIndexPath: 中设置大小吗?而不是手动设置单元格的框架?

我在想你必须调用 [self.collectionView.collectionViewLayout invalidateLayout];然后在 collectionView:layout:sizeForItemAtIndexPath: 中返回新尺寸

我不确定为什么动画会像现在这样,但我认为这不是更改单元格大小的首选方式,所以这可能会影响它。

关于ios - 缩小单元格框架与放大框架不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601532/

相关文章:

java - 如何以编程方式设置 Vector Drawable 的组参数?

ios - 这是什么类型的 View Controller ?

ios - UIViewController 中 present() 函数的 Swift 协议(protocol)

iOS;是否可以将动画图标设置为 UITabController 图标?

javascript - 如何对 SVG 矩形进行动画处理以从下到上填充?

ios - UICollectionView DidDeselectItemAtIndexPath 方法未在 Swift 中调用

iOS延迟我无法弄清楚使用AVFoundation扫描条形码

iphone - beginAnimations 和 using animations block 之间的动画速度不同

swift - 扩展 UICollectionViewDataSource 协议(protocol)以添加默认实现

ios - iOS 14.3 上的 UICollectionViewCompositionalLayout 错误