如何在动画插入新单元格之前滚动UICollectionView单元格?

时间:2018-08-05 19:07:25

标签: swift uicollectionview flowlayout

我有一个水平滚动UICollectionView,我想向其中添加多个单元格,这些单元格将导致发生两阶段动画:

  1. UICollectionView将现有单元格向左滚动,显示 新单元格将出现的空白处,然后...
  2. 然后,要插入的新单元格从屏幕外垂直向上滚动到空白区域。

将单元想象为当用户触发操作时从屏幕底部出现的卡片。

当前,我有一个自定义UICollectionViewFlowLayout和一个覆盖的initialLayoutAttributesForAppearingItem,该动画将为过渡的上滚动元素设置动画,但是在第一个项目之后,此动画将在屏幕外显示。我无法弄清楚如何向左滚动UICollectionView以显示在上滑动动画发生之前将来单元格将出现的空间。

我已经涉足contentOffset的更改,但这会导致一些非常生硬和小故障的行为。

解决此问题的最佳方法是什么?

当前的“ initialLayoutAttributesForAppearingItem”实现:

 override func initialLayoutAttributesForAppearingItem(at itemIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
    let attr = super.initialLayoutAttributesForAppearingItem(at: itemIndexPath)

    attr?.alpha = 0.0
    attr?.transform = CGAffineTransform(
        translationX: 0,
        y: self.collectionView!.bounds.height
    )

    return attr
}

0 个答案:

没有答案