3

我有一个UICollectionView使用UICollectionViewCompositionalLayout并且UICollectionViewDiffableDataSource工作正常。

单元由在数据源的初始化程序中定义的 cellProvider 提供。提供程序返回具有 indexPath 特定数据的单元格。

补充意见由var supplementaryViewProvider: UICollectionViewDiffableDataSource<SectionIdentifierType, ItemIdentifierType>.SupplementaryViewProvider

唯一的问题:我没有找到类似的东西DecorationViewProvider

按照 WWDC 2019 示例,我使用

layout.register(SectionBackgroundDecorationView.self, forDecorationViewOfKind: 
    MyCompositionalCollectionViewController.sectionBackgroundDecorationElementKind)

        let sectionBackgroundDecoration = NSCollectionLayoutDecorationItem.background(
            elementKind: MyCompositionalCollectionViewController.sectionBackgroundDecorationElementKind)
        section.decorationItems = [sectionBackgroundDecoration]

为部分提供背景视图。

问题:由于我没有找到提供者,背景装饰视图会自动初始化,所以我没有找到根据部分数据更改它的方法。

例如,我想根据部分为背景装饰视图设置不同的颜色。

如何让背景装饰视图知道它属于哪个部分或如何根据部分设置属性?

(我想到的只有肮脏的技巧:我可以编写 20 个不同的类SectionBackgroundDecorationView1,每个类都SectionBackgroundDecorationView2使用不同forDecorationViewOfKind:的类,每个类都硬编码它属于第 0 节,第 1 节......必须有更好的解决方案)

4

0 回答 0