问:当您使用
contentInsets
时,您如何将 group
应用于 UICollectionViewCompositionalLayout
,其中轴使用估计值作为其维度?
我有一个简单的应用程序,我可以在其中获取一些在线数据,然后以
UICollectionViewCompositionalLayout
. 的形式向用户显示数据
布局使用高度尺寸的估计值(因为在数据加载之前我不知道尺寸)我想在
contentInsets
上设置group
。
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(100))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(100))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
// Set content insets on the group, which is not allowed for estimated dimensions.
group.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10)
let section = NSCollectionLayoutSection(group: group)
let layout = UICollectionViewCompositionalLayout(section: section)
collectionView.collectionViewLayout = layout
我面临的问题是,根据文档,每当您使用
estimated尺寸(并且 Xcode 也在控制台中发出警告)时,不允许在组上设置
contentInsets
:
对于任何使用 其维度的估计值。有关详细信息,请参阅 估计(_:)
https://developer.apple.com/documentation/uikit/nscollectionlayoutitem/3199084-contentinsets
我考虑过的事情:
1:我唯一的“解决方案”是更新单元格中的约束以包含这些插图,但我宁愿在更高的抽象级别(即 UICollectionView)上修复这些插图。
2:是否可以选择在数据加载后为没有估计值的 collectionView 分配新布局?这会带来性能问题吗?
3:这个 SO 评论还提到使用 contentInsets 是不可能的估计值:https://stackoverflow.com/a/58568964/9339888,但是这里没有提供解决方案。