如何根据其内容创建具有动态高度的collectionview?

时间:2019-01-10 07:03:05

标签: ios swift uicollectionviewcell collectionview

源代码:My code

我需要针对不同长度的文本创建具有动态大小的布局,为此需要在tableview单元格内使用collectionview

我创建了具有自定义collectionview单元格的自定义collectionview。我已经使用带有预备重写方法的CustomFlowLayout(UICollectionViewLayout的子类)来计算每个单元格的大小。

我能够实现动态大小的collectionview单元格,现在我需要根据其内容大小使collectionview的高度动态化,截至目前,我已经将collectionview的高度限制为200,并将其设置为固定。

需要有关如何基于其内容动态设置collectionview高度并同时调整父tableview单元格以适合其内容的帮助

下面是我想要实现的屏幕截图,非常感谢!

DynamicContentSize

3 个答案:

答案 0 :(得分:0)

在您的CustomFlowLayout(它是UICollectionViewLayout的子类)中,您需要覆盖collectionViewContentSize,如下所示。

计算您的内容高度并将其返回。

override public var collectionViewContentSize: CGSize {
    return CGSize(width: collectionViewWidth, height: contentHeight)
}

希望有帮助!

答案 1 :(得分:0)

尝试使用调整视图高度

if heightConstraint.constant != collectionView.contentSize.height {
    heightConstraint.constant = collectionView.contentSize.height
    view.updateConstraintsIfNeeded()
}

您可以将tableview行高设置为自动。如果您的约束正确,则tableview单元格将自动调整其高度

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

答案 2 :(得分:0)

我已经在这里回答了这个问题:https://stackoverflow.com/a/53102033/7388630

您可以全面工作并说明代码示例here