【问题标题】:UICollectionView: Animate cell while scrollingUICollectionView:滚动时为单元格设置动画
【发布时间】:2021-07-04 20:13:47
【问题描述】:

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

示例:最顶部的单元格随着单元格滚动离屏幕越来越远而逐渐消失。

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

【问题讨论】:

  • 如果您知道可以跟踪可见单元格的新 iOS 14 api,则可以加分。看过一次,找不到了。。。
  • 使用滚动视图代理有什么问题?自 UICollectionView 创建以来,获取 visibleCells 的 API 就一直存在,它被称为 visibleCells
  • 此外,滚动委托会让您知道可见性的“百分比”、单元格可见的内容偏移量/部分,以了解应用于单元格的 alpha。我就是这样做的:听确实滚动。获取可见单元格,检查它是否部分隐藏,检查多少,更改每个可见单元格的 alpha 响应。

标签: ios swift uicollectionview uicollectionviewcompositionallayout uicollectionviewdiffabledatasource


【解决方案1】:

您可以尝试使用NSCollectionLayoutSectionVisibleItemsInvalidationHandler

let section = NSCollectionLayoutSection(group: group)

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

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

当一个新项目被添加到 visibleItems 时,您也可以对其应用动画。此外,如果添加了新项目,则会替换顶部的项目,因此您可以在两种情况下都使用 visibleItems

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多