私は、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」を使用すること
を委任することは、細胞が固定サイズを持っていない、彼らは自分自身を自動レイアウトする必要があり、です。 – andreaspfurtscheller
コンテナビューでサブビューを追加するには、このビューのsizeToFitを設定し、このコンテナのフレームを使用してセルのサイズを動的に設定します – vg0x00