上下文:
我正在使用 UICollectionViewCompositionalLayout 和估计的高度创建单元格,基于单元格内的动态文本。每个单元格的底部后角都有一个补充项目(一个按钮)。创建布局的代码的一小段摘录:
// List item
let estimatedListItemHeight = CGFloat(240)
let listItemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1/3),
heightDimension: .estimated(estimatedListItemHeight)
)
let listItem = NSCollectionLayoutItem(layoutSize: listItemSize, supplementaryItems: [makeOverflowButton()])
// List item group
let listItemGroupSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .estimated(estimatedListItemHeight)
)
let listItemGroup = NSCollectionLayoutGroup.horizontal(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .estimated(estimatedListItemHeight)
),
subitem: listItem,
count: 3
)
然后我使用单独的方法来创建补充项:
func makeOverflowButton() -> NSCollectionLayoutSupplementaryItem {
let overflowSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .estimated(25)
)
return NSCollectionLayoutSupplementaryItem(
layoutSize: overflowSize,
elementKind: OverflowSupplementaryButton.supplementaryViewKind,
containerAnchor: NSCollectionLayoutAnchor(edges: [.bottom, .trailing])
)
}
问题:
因为单元格的高度是动态的,所以补充项目彼此不在同一y
位置。但是,我确实希望它们是动态的,并且每个补充项目都相同y
。见下图:
一个想法可能是能够将补充项目放在它们的包含组上(listItemGroup
在我上面的摘录中),但是有没有办法把补充项目放在一个NSCollectionLayoutGroup
?
如果没有,实现这一结果的最佳方法是什么?