2017-07-22 15 views
1

私は、autolayoutを使ってテーブルビューのセルに水平スクロールコレクションビューを入れようとしていますが、コレクションビューとテーブルビューセルは意図したとおりにレイアウトされないため、高さがゼロである。私はすでに、このトピックに関してはここで見つけることができるすべての投稿を見てきましたが、どれも問題解決に役立たなかったのです。autolayoutを使ったテーブルビューの水平コレクションビュー

一般的な構造は次のようになります。

テーブルビュー

テーブルビューのセル

コレクションビュー

|コレクションビューのセル|コレクションビューのセル| ...

テーブルビューのセル

コレクションビュー

|コレクションビューのセル|コレクションビューのセル|

flowLayout.scrollDirection = .horizontal 
flowLayout.estimatedItemSize = CGSize(width: 1.0, height: 1.0) 

TableViewCellレイアウト:私はプロパティ

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 100.0 

だけでなく、コレクションビューフローレイアウトプロパティをリサイズテーブルビューの自動を設定している...

contentView.layout("H:|[a]|", views: collectionView) 
contentView.layout("V:|[a]|", views: collectionView) 

CollectionViewCellレイアウト:

contentView.layout("H:|[a]|", views: imageView) 
contentView.layout("H:|[a]|", views: titleLabel) 
contentView.layout("H:|[a]|", views: subtitleLabel) 
contentView.layout("V:|[a]-(4)-[b][c]|", views: imageView, titleLabel, subtitleLabel) 

それは潜在的にその細胞をレンダリングするスペースがないかもしれないので、私はすでに手動でコレクションビューの高さを設定しようとしましたが、そのcontentSizeは常にゼロです。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    collectionViewHeightConstraint.constant = collectionView.contentSize.height 
} 

は、私は自分のコード内の任意の場所にレイアウトするコレクションビューを伝え、そしてまたそれに十分なスペースを与える必要があると思うが、私の試みは、実行時に自動レイアウトエラーのトンで終わりました。だから多分誰かが私にこの1つを助けることができる、私は本当に高さをハードコードしたくない。

あなたは「UICollectionViewDelegateFlowLayout」を使用すること

答えて

0

、事前に

アンドレアスありがとうございます、それはコレクションは、自動レイアウトは、セルのサブビュー項目の制約追加し、すべてのセルのサイズを表示伝えます。

がUICollectionViewDelegateFlowLayoutにあなたのコレクションビューを適用し、 コレクションビューのデータソースを設定し、

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     return CGSize(width: 100, height: frame.height) 
    } 
+0

を委任することは、細胞が固定サイズを持っていない、彼らは自分自身を自動レイアウトする必要があり、です。 – andreaspfurtscheller

+0

コンテナビューでサブビューを追加するには、このビューのsizeToFitを設定し、このコンテナのフレームを使用してセルのサイズを動的に設定します – vg0x00

関連する問題