我有一个由组合布局 + diffable 数据源驱动的集合视图。它使用三个补充边界项:页眉、页脚和“前导页眉”。
问题是:前导标题的分数大小基于整个容器,而不是部分。所以我不能简单地设置标题的'分数高度 = 1'。相反,我需要计算部分大小,并使用“绝对值”将前导标题的高度设置为它。但是我怎样才能得到部分的大小呢?
func createFoodSection(using section: FoodCategory, sectionIndex: Int) -> NSCollectionLayoutSection {
let itemSize = NSCollectionLayoutSize(widthDimension: .estimated(75),
heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .absolute(39))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,
subitems: [item])
let leftSize = NSCollectionLayoutSize(widthDimension: .absolute(5.0),
heightDimension: .absolute(120.0))
let leftSection = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: leftSize,
elementKind: "leadingKind",
alignment: .leading)
let topSectionHeader = createSectionHeader()
let layoutSection = NSCollectionLayoutSection(group: group)
layoutSection.boundarySupplementaryItems = [topSectionHeader, leftSection]
return layoutSection
}
部分中的组高度固定为 .absolute(39)。因此,如果我知道一个部分中的组数,我应该能够计算高度。
奖励积分!这些部分是可展开可折叠的。这意味着前导标题的高度需要在其部分的展开折叠时改变。