动态UITolViewView内部的动态UICollectionView

时间:2018-04-19 22:29:48

标签: swift uitableview dynamic uicollectionview

我有动态集合视图,并且可以包含任意数量的单元格。它位于表格视图单元格内。

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

我的表格视图已正确配置为动态,因为其他单元格工作正常,因此问题不存在。

以下是我目前的情况......正如您所看到的,下面没有集合视图

enter image description here

这是我想要的结果...... (在集合视图上强制高度限制)

enter image description here

我已正确配置集合视图的所有方面的约束,因为当我提供修复高度约束时它会起作用。但这打败了动态集合视图的对象......

我已将出口链接到 UICollectionViewFlowLayout 并设置估算的单元格大小,并为上的单元格提供正确约束标签在内部,如我在强制高度限制的图像中所示。

1 个答案:

答案 0 :(得分:2)

为collectionView创建一个子类,并覆盖internalContentSize。

class DynamicCollectionView: UICollectionView {
  override func layoutSubviews() {
    super.layoutSubviews()
    if !__CGSizeEqualToSize(bounds.size, self.intrinsicContentSize) {
        self.invalidateIntrinsicContentSize()
     }
  }

   override var intrinsicContentSize: CGSize {
    return collectionViewLayout.collectionViewContentSize
   }
}
  1. 在“界面”构建器中,将您的collectionView的类更改为DynamicCollectionView(子类UICollectionView)。

  2. 设置UICollectionViewFlowLayout的估计单元格大小。

        flowLayout.estimatedItemSize = CGSize(width: 1,height: 1)