2017-01-27 90 views
0

我有一個集合視圖嵌套在集合視圖中。我所做的嘗試並根據內容動態調整單元格大小,可以爲子集合的高度創建出口,並在獲取內容大小後更改其常量。CollectionView單元格在滾動後更改大小 - AutoLayout

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

enter image description here

所以我必須限制於母公司的細胞在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中看到子集合視圖(aqua'ish彩色框)的大小仍然相同,它是縮小大小的父單元格(橙色框)。

enter image description here

我在這裏難倒,不知道該做什麼。

它返回到完整大小的位只是gif重置它實際上並沒有這樣做。

回答

0

內cellForItemAt(其中outerCell是正常細胞宣)重新聲明的委託,然後重新加載子集:

outerCell.setCollectionViewDataSourceDelegate(dataSourceDelegate: self, forItem: indexPath.item) 
outerCell.innerCollectionView.reloadData() 
outerCell.innerCollectionView.layoutIfNeeded() 
相關問題