UICollectionView:滚动时动画单元格

问题描述

我想在 UICollectionView 中最顶部和最底部的单元格进入和离开屏幕时为其设置动画。我不只是想使用滚动视图委托和一次性动画来制作动画。我希望动画是由进度驱动的。

示例:随着单元格在屏幕外滚动得更远,最顶部的单元格逐渐消失。

我已经在互联网上搜索了一种方法来做到这一点,但解决方案要么已经过时,要么没有达到这种效果。提前致谢。

解决方法

您可以尝试使用 NSCollectionLayoutSectionVisibleItemsInvalidationHandler

let section = NSCollectionLayoutSection(group: group)

section.visibleItemsInvalidationHandler = { visibleItems,scrollOffset,layoutEnvironment in
     // perform animations on the visible items
}

如果您知道单元格的高度,您可以使用 scrollOffset 跟踪顶部单元格何时将被滚动并添加动画。

将新项目添加到 visibleItems 时,您也可以对其应用动画。此外,如果添加了新项目,则顶部的项目将被替换,因此您可以仅使用 visibleItems 来处理这两种情况。