【问题标题】:TableView cell height not according to collectionview height on first reloadTableView 单元格高度不根据第一次重新加载时的 collectionview 高度
【发布时间】: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的地方

标签: ios uitableview uicollectionview swift4 uitableviewautomaticdimension


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2018-09-14
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2019-11-18
      • 2012-04-22
      • 2012-04-21
      相关资源
      最近更新 更多