Swift UICollectionView自调整单元格大小

Swift UICollectionView自调整单元格大小,swift,uicollectionview,uicollectionviewflowlayout,Swift,Uicollectionview,Uicollectionviewflowlayout,所以我想知道如何调整集合视图单元格的大小。所以我有一个ViewController,我在ViewController中拖动了一个collectionView。我没有使用xib文件,我使用的是一个原型单元。现在我似乎不知道如何调整电池的大小。它不像表视图那么简单。我已经尝试了以下我发现的方法 if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { layout.est

所以我想知道如何调整集合视图单元格的大小。所以我有一个ViewController,我在ViewController中拖动了一个collectionView。我没有使用xib文件,我使用的是一个原型单元。现在我似乎不知道如何调整电池的大小。它不像表视图那么简单。我已经尝试了以下我发现的方法

if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {

        layout.estimatedItemSize = CGSize(width: view.frame.width, height: 100)
        layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
    }
然后我发现了另一个创造dummyCell的,看起来像这样。但这会使我的应用程序崩溃

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)
    let dummyCell = CommentCell(frame: frame)
    let comment = comments[indexPath.item]
    print(comment.text)

    dummyCell.comment = comment
    dummyCell.layoutIfNeeded()

    let targetSize = CGSize(width: view.frame.width, height: 1000)
    let estimateSize = dummyCell.systemLayoutSizeFitting(targetSize)
    let height = max(45 + 8 + 8, estimateSize.height)
    return CGSize(width: view.frame.width, height: height)

}

所以我需要一个集合视图控制器而不是视图控制器。我如何能够在不使用collectionViewController或nib文件的情况下自行调整单元格大小?谢谢

假设您在cell NIB/prototype中有约束条件,您希望将
itemSize
设置为
。自动调整

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

您尚未共享设置位置,但如果在
viewDidLoad
中执行,则
view.frame.width
可能与您想象的不同。您需要再次检查…

这可能会有所帮助,请检查此链接,“这会使我的应用程序崩溃”。。。如果你想使用后一种技术,如果它崩溃了,你必须告诉我们它在哪一行崩溃了,控制台上显示了什么,等等。没有这些信息,我们很难进行诊断……看看这篇文章