对于给定的布局,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