UICollectionViewCompositionalLayout contentInsets 及其尺寸的估计值

问题描述 投票:0回答:0

问:当您使用

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,但是这里没有提供解决方案。

swift uicollectionview uicollectionviewcell uicollectionviewlayout uicollectionviewcompositionallayout
© www.soinside.com 2019 - 2024. All rights reserved.