首页 > 解决方案 > 带有分页的 UICollectionViewCompositionalLayout - header + cell = fractionalHeight(1)

问题描述

在构建组合部分以强制标题加上部分高度为 .fractionalHeight(1) 时,有什么办法吗?

我正在尝试使 collectionView 垂直分页,因此每个“页面”都显示一个标题单元格和一个可能垂直移动的单个部分单元格。

static func fullHeightSectionLayoutWithHeader(padding: CGFloat) -> UICollectionViewCompositionalLayout {
        return UICollectionViewCompositionalLayout { (sectionNumber, env)
                -> NSCollectionLayoutSection? in
        
            let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(1),
                                                                heightDimension: .fractionalHeight(1) ) )
            
            let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1) )
            
            let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item])
            
            let section = NSCollectionLayoutSection(group: group)
            
            let headerSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .estimated(50.0))
            
            let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerSize,
                                                                     elementKind: UICollectionView.elementKindSectionHeader,
                                                                     alignment: .top)
            
            section.boundarySupplementaryItems = [header]
            
            return section
        }
    }

所以这显示了一个 50px 的标题,然后该部分从屏幕底部绘制 50px,然后抛出 collectionView 的分页。

有没有办法将标题的高度指定为 50px,然后填充剩余高度的部分?也许我遗漏了一些东西,或者我必须用估计的高度来做这件事,并在单元格布局期间设置实际高度?

提前致谢!

标签: swiftuicollectionviewuicollectionviewcompositionallayout

解决方案


推荐阅读