具有布局布局的CollectionView中的动态尺寸标题

时间:2020-11-01 12:41:09

标签: ios swift uicollectionview uicollectionviewlayout uicollectionviewcompositionallayout

我有一个由合成布局+可变数据源提供支持的集合视图。它使用三个补充边界项:页眉,页脚和“前导页眉”。

App Layout Example

问题是:前导标头的小数部分基于整个容器,而不是部分。因此,我不能简单地设置标题的“分数高度= 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)。因此,如果我知道某个部分中的组数,我应该能够计算高度。

加分!这些部分可展开折叠。意味着页眉的高度需要随着其部分的展开折叠而改变。

0 个答案:

没有答案
相关问题