UICollectionViewCompositionalLayout错误的内容大小



对于给定的布局,UICollectionView总是返回等于UICollectionView大小的内容大小,即使项目超出了UICollectionView。

private lazy var layout: UICollectionViewCompositionalLayout = {
let margin = 8.0
let itemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalHeight(1.0)
)
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(
widthDimension: .estimated(56),
heightDimension: .fractionalHeight(1.0)
)
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
let section = NSCollectionLayoutSection(group: group)
section.contentInsets = NSDirectionalEdgeInsets(top: .zero, leading: margin, bottom: .zero, trailing: margin)
section.orthogonalScrollingBehavior = .continuous
return UICollectionViewCompositionalLayout(section: section)
}()

我也怀疑,因为我不能以编程方式滚动到屏幕之外的项目。这里有什么问题吗?

我试图改变widthDimension的项目和组,contentInsets,但它没有工作。

正确的方法是:

NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitem: item, count: 1)

section.orthogonalScrollingBehavior = .continuousGroupLeadingBoundary

尝试更改组的大小。

而不是:

let groupSize = NSCollectionLayoutSize(
widthDimension: .estimated(56),
heightDimension: .fractionalHeight(1.0)
)

试题:

let groupSize = NSCollectionLayoutSize(
widthDimension: .estimated(56),
heightDimension: .estimated(200)
)

我认为问题是你没有设置组的高度。

尝试使用:

section.orthogonalScrollingBehavior = .paging