2017-01-27 5 views
0

私はコレクションビューをコレクションビューにネストしています。コンテンツに基づいて動的にセルサイズを変更しようと試みたのは、子コレクションの高さのコンセントを作成し、コンテンツサイズを取得した後に定数を変更することです。CollectionViewスクロール後のセルのサイズが変わる - AutoLayout

これは私のIB制約のスクリーンショーで、ハイライト1を使用しています。

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で、子コレクションビュー(水色のボックス)が同じサイズであることがわかります。サイズが縮小された親セル(オレンジ色のボックス)です。

enter image description here

私は何をすべきかを、ここで困惑します。

フルサイズに戻ってくるビットは、それを実際にはリセットしていないgifです。その後、cellForItemAt内部

答えて

0

(outerCellは通常、宣言セルである場合)再宣言デリゲートと子のコレクションをリロードします。

outerCell.setCollectionViewDataSourceDelegate(dataSourceDelegate: self, forItem: indexPath.item) 
outerCell.innerCollectionView.reloadData() 
outerCell.innerCollectionView.layoutIfNeeded() 
関連する問題