TableView 单元格高度不根据第一次重新加载时的 collectionview 高度
Posted
技术标签:
【中文标题】TableView 单元格高度不根据第一次重新加载时的 collectionview 高度【英文标题】:TableView cell height not according to collectionview height on first reload 【发布时间】:2018-04-20 04:22:21 【问题描述】:我知道这已经在很多线程中被问过了,但没有一个解决方案对我有用。问题场景是:我在表格视图单元格中有一个集合视图。集合视图的约束如下:Collectionview 顶部、前导、尾随和底部约束到 superview 和 heightconstraint(优先级 999)。将集合视图的高度更改为:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: GalleryCollectionViewCell.identifier, for: indexPath) as? GalleryCollectionViewCell
collectionViewHeightConstraint.constant = collectionView.contentSize.height
self.layoutIfNeeded()
return cell
return UICollectionViewCell()
点击按钮时,tableview 会重新加载,当打印 collectionview 高度约束值时,它会实现,但 tableview 单元格没有获得准确的内容大小。但是当我滚动时,tableview 单元格会得到确切的大小。
PS:也试过使用:
collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
【问题讨论】:
集合视图重新加载后需要重新加载表格视图。 @Scott.N 但它会导致两次重新加载tableview 考虑重新加载表格单元格行容器集合视图 @Scott.N 但是我需要在哪里重新加载 tableview 行,因为 collectionview 在 tableview 单元格中。 在你调用reload collectionview的地方 【参考方案1】:在您的collectionviewCell
中,您需要获取 ContentView 并设置常量高度
self.contentView.translatesAutoresizingMaskIntoConstraints = false
Heightconstant.constant = 200
【讨论】:
【参考方案2】:通过设置收集流布局来试试这个:-
var flowLayout = UICollectionViewFlowLayout()
flowLayout.itemSize = CGSize(width: 200, height: collectionView.contentSize.height)
flowLayout.minimumInteritemSpacing = 0
flowLayout.scrollDirection = .vertical
CollectionVW.collectionViewLayout = flowLayout
【讨论】:
以上是关于TableView 单元格高度不根据第一次重新加载时的 collectionview 高度的主要内容,如果未能解决你的问题,请参考以下文章
目标 C:如何突出显示 tableView 单元格并在重新加载表格时保持突出显示?
重新加载行以更新 UITableView 中的单元格高度时出现问题