ios UICollectionViewCompositionalLayout内容大小错误

ipakzgxi  于 2023-04-08  发布在  iOS
关注(0)|答案(2)|浏览(152)

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

此外,我怀疑,因为我不能编程滚动到屏幕以外的项目。这里会有什么问题呢?
我尝试更改item和组contentInsets的widthDimension,但不起作用。

ajsxfq5m

ajsxfq5m1#

尝试用途:
section.orthogonalScrollingBehavior = .paging

mctunoxg

mctunoxg2#

尝试更改组的大小。
而不是这样:

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

尝试:

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

我想问题是你没有为小组设定高度。

相关问题