0

我一直在挖掘 iOS 13 中引入的“新”组合布局 api,希望找到一个解决方案来解决UITableViewUICollectionViewCell. 我过去曾使用过这种令人头疼的解决方案,以便同时提供水平页面滚动和垂直表格滚动。这是一种非常繁琐的做事方式,自从CompositionalLayout宣布以来,我一直渴望尝试重构它。

到目前为止,没有运气。我可以使水平滚动和垂直滚动工作,但无法超越每行以独立方式水平滚动的“App Store”行为。有没有人有运气实施类似的解决方案?

这是我的代码CollectionViewLayout

func createOrthogonalScrollingLayout() -> UICollectionViewLayout {


    let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(0.5))
    let item = NSCollectionLayoutItem(layoutSize: itemSize)

    let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0))
    let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item])

    let section = NSCollectionLayoutSection(group: group)
    section.orthogonalScrollingBehavior = .groupPagingCentered
    section.interGroupSpacing = 16
    section.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)


    let layout = UICollectionViewCompositionalLayout(section: section)

    return layout

}

这会产生两个项目的垂直滚动和显示后续页面中剩余项目的水平滚动,但每页只有两个。我的目标是让“页面”除以一年中的天数,每个页面应该有 X 个垂直滚动的项目。

在此处输入图像描述

谢谢

4

1 回答 1

0

groupSize 高度应该是你的单元格的高度,例如,像这样:

let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
    
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.8), heightDimension: .absolute(250.0))
let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item])
于 2021-03-13T22:29:00.767 回答