的CollectionView细胞滚动后改变大小 - 自动版式(CollectionView Cel

2019-09-30 12:22发布

我有一个集合视图嵌套在一个集合视图。 我所做的尝试,并有动态的基于内容的单元尺寸的改变是为孩子收集的高度创造的出口,并且获取内容大小后更改其不变。

这是我的IB约束的屏幕显示,而我使用的是一个高度强调。

所以,我必须限制于母公司的细胞在4路两侧高度不变子集视图(浅绿色的颜色框)。

在我的自定义单元格级,其持有的孩子集合视图,我设置的高度,如:

    let contentHeight = innerCollectionView.collectionViewLayout.collectionViewContentSize.height
        innerCollectionHeight.constant = contentHeight

然后在保持在viewDidLoad中父集合视图我的视图控制器I类指定估计项目大小:

    let flowLayout = outerCollectionView.collectionViewLayout as! UICollectionViewFlowLayout
        flowLayout.estimatedItemSize = CGSize(width: view.frame.width - 20, height: view.frame.height / 4)
        flowLayout.minimumLineSpacing = 10
        flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 10, right: 10)

其结果是,在初始负荷一切显示正确,但是滚动其具有2行的数据(绿色数图标)顶部单元之后自行调整至是相同的其他人。 您可以在下面的子集视图(aqua'ish彩色框)仍然是相同大小的gif看,它是在大小减少了母细胞(橙色框)。

我在这里难倒,不知道该做什么。

在那里它可以追溯到全尺寸钻头只是GIF正在重置它实际上并没有做到这一点。

Answer 1:

里面cellForItemAt(其中outerCell是正常细胞宣)重新声明的委托,然后重新加载子集:

outerCell.setCollectionViewDataSourceDelegate(dataSourceDelegate: self, forItem: indexPath.item)
outerCell.innerCollectionView.reloadData()
outerCell.innerCollectionView.layoutIfNeeded()


文章来源: CollectionView Cell changing size after scrolling - AutoLayout