我正在尝试自适应大小的集合视图单元格。我有一个视图控制器并在其中拖动了一个集合视图。我没有使用xib文件,而是使用原型单元格。现在我无法弄清如何自适应大小。这不像表格视图那么容易。我尝试了以下方法:
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
layout.estimatedItemSize = CGSize(width: view.frame.width, height: 100)
layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
}
然后我找到了另一个创建虚拟单元格的方法,它看起来像这样。不过这会导致我的应用程序崩溃。
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)
}
那么我需要使用集合视图控制器而不是视图控制器。如果不使用集合视图控制器或nib文件,我如何能够自适应大小的单元格呢?谢谢。