问题描述
我想在 UICollectionView 中最顶部和最底部的单元格进入和离开屏幕时为其设置动画。我不只是想使用滚动视图委托和一次性动画来制作动画。我希望动画是由进度驱动的。
示例:随着单元格在屏幕外滚动得更远,最顶部的单元格逐渐消失。
我已经在互联网上搜索了一种方法来做到这一点,但解决方案要么已经过时,要么没有达到这种效果。提前致谢。
解决方法
您可以尝试使用 NSCollectionLayoutSectionVisibleItemsInvalidationHandler
let section = NSCollectionLayoutSection(group: group)
section.visibleItemsInvalidationHandler = { visibleItems,scrollOffset,layoutEnvironment in
// perform animations on the visible items
}
如果您知道单元格的高度,您可以使用 scrollOffset 跟踪顶部单元格何时将被滚动并添加动画。
将新项目添加到 visibleItems 时,您也可以对其应用动画。此外,如果添加了新项目,则顶部的项目将被替换,因此您可以仅使用 visibleItems 来处理这两种情况。