调整UICollectionViewCell的大小

时间:2016-09-26 13:37:31

标签: ios uicollectionview uicollectionviewcell ios10

在我的应用程序中,我使用FlowLayout(垂直)的UICollectionView。在收集单元格中,我有标题用于标题,textView用于内容。内容长度可以变化,短或长。我需要实现cell的autoresizing。在我的CustomCell类中,我重写了这个方法:

override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {

    let attributes = layoutAttributes.copy() as! UICollectionViewLayoutAttributes
    let desiredHeight = systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
    attributes.frame.size.height = desiredHeight

    return attributes
}

在ViewDidLoad()的ViewController类中我写了这个:

if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    layout.estimatedItemSize = CGSize(width: view.frame.width, height: 120)
}

app运行时没有任何错误,但是仅在滚动后才调整单元格大小,而不是在屏幕上显示视图时。有什么问题需要解决吗?

滚动前

enter image description here

滚动后

enter image description here

1 个答案:

答案 0 :(得分:0)

我相信您有更新约束问题,这就是为什么当您滚动内容时,您已经更新了约束并获得了正确的高度。在调用systemLayoutSizeFitting(UILayoutFittingCompressedSize)之前。你应该调用layoutIfNeeded()