如何解决具有估计高度的 UICollectionViewCompositionalLayout 嵌套组
我目前定义了以下组合布局:
func compose() -> NSCollectionLayoutSection {
let heroItemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(2/3),heightDimension: .estimated(550)
)
let heroItem = NSCollectionLayoutItem(layoutSize: heroItemSize)
let sideKickItemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1.0),heightDimension: .fractionalHeight(0.5)
)
let sideKickItem = NSCollectionLayoutItem(layoutSize: sideKickItemSize)
let sideKickGroupSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1/3),heightDimension: .fractionalHeight(1.0)
)
let sideKickGroup = NSCollectionLayoutGroup.vertical(
layoutSize: sideKickGroupSize,subitems: [sideKickItem,sideKickItem]
)
let topGroupSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1.0),heightDimension: .estimated(550)
)
let topGroup = NSCollectionLayoutGroup.horizontal(
layoutSize: topGroupSize,subitems: [heroItem,sideKickGroup]
)
return NSCollectionLayoutSection(group: topGroup)
}
这给了我以下布局:
理想情况是绿色单元格(heroItem
)的估计高度应该是领先的。紫色单元格(sideKickItem
)应该和绿色单元格一样高。
我不确定为什么布局最终使用高度 550
作为最终高度,这使得紫色单元格对于其内容来说太大了。
所以最后我希望布局像下图一样:
解决方法
解决办法: 要进行的更改很细微:
1.Function 必须返回 UICollectionViewLayout 而不是 NSCollectionLayoutSection
- NSCollectionLayoutSection = "组合了一组 分成不同的视觉分组。”
- UICollectionViewCompositionalLayout = "一个布局对象,让你 以高度适应性和灵活的视觉排列组合项目。”
2.将 NSCollectionLayoutSection 传递给 UICollectionViewCompositionalLayout
最终代码:
//change 1
func compose() -> UICollectionViewLayout {
//change 2
let section = NSCollectionLayoutSection(group: topGroup)
let layout = UICollectionViewCompositionalLayout(section: section)
return layout
如果可行,请接受此答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。