2017-03-28 12 views
2

タイトルテキスト、説明テキスト、およびコレクションビューで構成されるセルを作成したいとします。だから私はこの Custom CellUITableViewCell内のUICollectionViewの自動高さ

などの作成したセルにしようとした私は、末尾、およびタイトル説明のためのスーパーの制約につながる、トップを追加しました。次に、私はUICollectionViewにトップ、ボトム、トレーリング、リーディングの制約を加えます。

自動高さ、私のテーブルビューセルの場合、私はviewWillAppear

override func viewWillAppear(_ animated: Bool) { 
    tableView.estimatedRowHeight = 300 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

そして、私のカスタムセルクラスでオーバーライドし、私は私がしたいことはcollectionView内のセルの全てが示されている、layoutIfNeeded()

public func setRowWithData(model: DataModel) { 
    // set your view here 
    contentView.layoutIfNeeded() 
} 

であると呼ばれます私のtableViewCellの身長はそれに適応します。

これを行う方法はありますか?どんな助けもありがとう。ありがとうございました!

+0

https://github.com/IosPower/AppStoreLikeExampleSwift3 –

+0

あなたには、いくつかの導入、@PiyushSinrojaを追加しますか? –

+0

@SonicMasterそれを解決しましたか? – goldengil

答えて

1

コレクションビューのコンテンツサイズオブザーバを使用すると、実行時にコンテンツに応じてコレクションビューの高さを変更できます。

あなたのコレクションビューにオブザーバーを追加するには、以下の方法を使用できます。

self.collectionView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.old.union(NSKeyValueObservingOptions.new), context: nil) 

以下のコールバックメソッドを使用すると、コレクションビューの高さランタイムを設定できます。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
     self.collectionViewHeight.constant = self.collectionView.contentSize.height 
} 
関連する問題