3

我有一个由组合布局 + 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)。因此,如果我知道一个部分中的组数,我应该能够计算高度。

奖励积分!这些部分是可展开可折叠的。这意味着前导标题的高度需要在其部分的展开折叠时改变。

4

0 回答 0