swift UICollectionViewCompositionalLayout中的动态项目计数是否可行?

uz75evzq  于 2022-11-21  发布在  Swift
关注(0)|答案(2)|浏览(145)

我想在我的UICollectionView中有几个部分。在一个部分中应该有保存文本的项。使用“经典”collectionView方法,在同一行中显示的项的计数取决于项的宽度。collectionView只在项无法放入同一行时添加新行。因此,有些行可能有5项,有些行可能有3项。如下所示:

当我使用组合布局时,我需要指定条目数。实际上我希望集合视图关注几个部分的条目数。
使用UICollectionViewCompositionalLayout可以做到这一点吗?

42fyovps

42fyovps1#

顶级域名注册商

如果在合成布局中仅使用一个NSCollectionLayoutItem对象(看起来您就是这样),则使用以下方法之一创建布局组(取决于希望布局流向的方向):

NSCollectionLayoutGroup.horizontal(layoutSize:subitems:)
NSCollectionLayoutGroup.vertical(layoutSize:subitems:)

将NSCollectionLayoutItem对象作为subItems数组中的唯一项放置。
当布局集合视图时,将使用您在UICollectionViewDataSource的(_:numberOfItemsInSection:)中指定的项数来布局您的项。

稍长

我假设您指的是NSCollectionLayoutGroup.horizontal(layoutSize:subitem:count:)之类的方法,如果是这样,那么您可能误解了这里的count参数的含义。
在使用不同NSCollectionLayoutItem对象(具有不同大小/布局)的组合的情况下,此处的count参数表示您希望该组 * 中有多少个该项用于布局 *。
加载/重新加载集合视图时,无论您为UICollectionViewDataSource的(_:numberOfItemsInSection:)提供什么计数,都将仍然呈现-如果该计数高于您在组合布局中指定的计数,则将创建新组(遵循您的布局)以容纳额外的项。

2j4z5cfb

2j4z5cfb2#

首先感谢您抽出时间。
我想让单元格的大小沿着x轴(宽度)动态变化,然后UIKit应该尽可能多地放在一行中。似乎计数指示了一行中可以包含的固定项目数。
这是我代码

func generateLayout() -> UICollectionViewLayout {
        let itemSize = NSCollectionLayoutSize(
            widthDimension: .estimated(100),
            heightDimension: .absolute(20))

        let fullPhotoItem = NSCollectionLayoutItem(layoutSize: itemSize)

        let groupSize = NSCollectionLayoutSize(
            widthDimension: .fractionalWidth(1),
            heightDimension: .estimated(20))

        let group = NSCollectionLayoutGroup.horizontal(
            layoutSize: groupSize,
            subitem: fullPhotoItem,
            count: 1)

        let section = NSCollectionLayoutSection(group: group)
        let layout = UICollectionViewCompositionalLayout(section: section)
        return layout
    }

相关问题