簡體   English   中英

滾動后 CollectionView 單元格更改大小 - AutoLayout

[英]CollectionView Cell changing size after scrolling - AutoLayout

我有一個嵌套在集合視圖中的集合視圖。 我所做的嘗試根據內容動態更改單元格大小是為子集合的高度創建一個出口,並在獲取內容大小后更改其常量。

這是我的 IB 約束的屏幕顯示,我正在使用突出顯示的高度。

在此處輸入圖片說明

因此,我將子集合視圖(aqua 的顏色框)限制在高度恆定的 4 邊上的父單元格中。

在包含子集合視圖的自定義單元格類中,我將高度設置為:

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

然后在我在 viewDidLoad 中保存父集合視圖的視圖控制器類中,我指定了估計的項目大小:

    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 行數據(綠色數字圖標)的頂部單元格后,將自身調整為與其他單元格相同。 您可以在下面的 gif 中看到子集合視圖(淺綠色框)的大小仍然相同,是父單元格(橙色框)的大小減小了。

在此處輸入圖片說明

我不知道該怎么做。

它恢復到全尺寸的那一點只是重置它的 gif,它實際上並沒有這樣做。

在 cellForItemAt 內(其中,outerCell 是通常聲明的單元格)重新聲明委托,然后重新加載子集合:

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

嘗試在 Storyboard Estimate Size中將您的收藏視圖設置為none

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM