小编Joh*_*ade的帖子

如何使用 UICollectionViewCompositionalLayout 创建具有相等行高的网格布局

我已经成功地能够使用UICollectionViewCompositionalLayout. 但是,我无法找到一种巧妙的方法来确保UICollectionViewCell网格中的每一行在高度是动态的时都具有相同的高度。即我希望单元格拉伸以填充行中的可用空间高度。

所需布局:

  • 网格 (3 x N)
  • 可变高度单元格
  • 每个单元格在给定的行中具有相同的高度。(连续使用最大单元格高度)
  • 每个单元格底部的小分隔线。
+------+--+------+--+------+
|~~~~~~|  |~~~~~~|  |~~~~~~|
|~~~~~~|  |~~~~~~|  |~~~~~~|
|~~~~~~|  |~~~~~~|  |      |
|~~~~~~|  |      |  |      |
--------  -------   --------   <--- divider
+------+--+------+--+------+

Run Code Online (Sandbox Code Playgroud)

注意:行本身是正确的高度,但我希望单元格内容拉伸以填充可用空间,因为我需要在每个单元格的底部插入一个小的“分线符”。我考虑过为此使用补充视图,但它似乎有点混乱。

当前尝试:

func createLayout() -> UICollectionViewLayout {
    let estimatedHeight: CGFloat = 100

    let item = NSCollectionLayoutItem(
        layoutSize: .init(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(estimatedHeight)),
        supplementaryItems: []
    )

    let groupLayoutSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
                                                 heightDimension: .estimated(estimatedHeight))
    let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupLayoutSize, subitem: item, count: 3)


    let section = NSCollectionLayoutSection(group: …
Run Code Online (Sandbox Code Playgroud)

grid ios uicollectionview swift uicollectionviewcompositionallayout

6
推荐指数
1
解决办法
439
查看次数