使用自动布局自定义集合视图单元格的动态高度

Posted

技术标签:

【中文标题】使用自动布局自定义集合视图单元格的动态高度【英文标题】:Dynamic height for custom collection view cell by using autolayouts 【发布时间】:2017-02-09 05:42:17 【问题描述】:

我创建了一个自定义集合视图单元格。它有一个UILabelUIViewUIButton,然后是UITextView

要求是

    UILabel 的文本大小可以是任何值。基于此,它的内容大小标签必须重新调整大小。它工作正常。 可以向 UIView 添加任意数量的视图。基于此,此 UIView 必须重新调整大小。 UIButton 只是一个普通按钮。当我们点击它时,下面的 TextView 将会切换。

我应用的约束是:

【问题讨论】:

collection view 是否会根据其内容的单元格大小? 【参考方案1】:

使用此方法计算适合您的尺寸并返回。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    let Labell : UILabel = UILabel()

    Labell.text =   self.items[indexPath.item]
    let labelTextHeight =   Labell.intrinsicContentSize.height
    //calculate size for UIView, UIButton, TextView and then add it
    return CGSize(width: /*fix width*/, height: labelTextHeigh + /*your UIView height and other height*/)


别忘了从UICollectionViewDelegateFlowLayout扩展你的viewController

【讨论】:

请告诉我如何计算尺寸的@Rock Balbao @Rock Balbao,您在其中分配了 uilabel 的文本。 我正在创建一个临时标签,它将文本作为 label.text 并计算其高度,因此通过这种方式我将获得将实时使用的标签的大小。我可以设置集合视图的高度和标签的高度+你想在单元格之间保留的一些空间。 @RahulPatel @RamcharanReddy 告诉我你的 UIView 中有什么?和文本视图。使用那些 3(button,view,textview) 的内在高度加上标签的高度,然后返回它 UIView 可以添加任意数量的子视图,如自定义单选按钮、复选框等。按钮具有固定高度。 TextView 也有固定的高度,但它会切换。 @RockBalbao

以上是关于使用自动布局自定义集合视图单元格的动态高度的主要内容,如果未能解决你的问题,请参考以下文章

具有动态大小的单元格的复杂自动布局

根据图像高度在集合视图自定义布局中获取单元格的高度

使自定义单元格(使用自动布局创建)高度为零

多个自定义视图的自动布局问题

使用自定义集合视图布局快速配置动态单元格高度

设置表格视图单元格的动态高度