我有一个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 节......必须有更好的解决方案)