2017-07-22 81 views
1

我拼命地嘗試使用自動佈局將水平滾動集合視圖放入表格視圖單元格,但集合視圖和tableview單元格不會按預期佈置,所以它們最終高度爲零。我已經看過每一篇關於這個話題都可以在這裏找到的帖子,但沒有人幫助我解決這個問題。使用自動佈局在表格視圖中的水平集合視圖

一般結構是這樣的:

的TableView

表格視圖單元格

集合視圖

|集合視圖單元格|集合視圖單元格| ...

表格視圖單元格

集合視圖

|集合視圖單元格|集合視圖單元格| ...

我已經設置了自動的TableView調整性質

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 100.0 

以及集合視圖流佈局屬性:

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

TableViewCell佈局:

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 
} 

我想我需要告訴集合視圖在我的代碼的任何佈局,也給它足夠的空間,但我嘗試結束了在汽車噸佈局錯誤在運行時。所以也許有人可以幫助我,我真的不想硬編碼的高度。

謝謝你在前進,

安德烈亞斯

回答

0

您可以使用「UICollectionViewDelegateFlowLayout」,它告訴收集查看每一個細胞的大小,再加入自動佈局限制了細胞的子視圖項目。

適用您的收藏以UICollectionViewDelegateFlowLayout,並設置 集合視圖的數據源和委託

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

的事情是,細胞不具有固定的大小,他們應該自動佈局自己。 – andreaspfurtscheller

+0

關於在容器視圖中添加子視圖,設置此視圖sizeToFit,使用此容器的框架來動態設置單元格的大小 – vg0x00

相關問題