动态UITolViewView内部的动态UICollectionView

问题描述 投票:1回答:1

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

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

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

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

enter image description here

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

enter image description here

我已经正确地在集合视图的所有边配置了约束,因为它在我给出修复高度约束时起作用。但是这会破坏动态集合视图的对象......

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

swift uitableview dynamic uicollectionview
1个回答
2
投票

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

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

   override var intrinsicContentSize: CGSize {
    return collectionViewLayout.collectionViewContentSize
   }
}
  1. 在Interface构建器中,将collectionView的类更改为DynamicCollectionView(子类UICollectionView)。
  2. 设置UICollectionViewFlowLayout的估计单元格大小。 flowLayout.estimatedItemSize = CGSize(width: 1,height: 1)
© www.soinside.com 2019 - 2024. All rights reserved.