【发布时间】:2021-11-08 05:44:47
【问题描述】:
我有一个 UICollectionView,它的初始高度是 50。 当我知道单元格的大小时,我想更新它。 对于我所做的:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let categoriesCount = 16
let numberOfItemsInRow = 3
let numberOfRows = ceil(CGFloat(categoriesCount) / CGFloat(numberOfItemsInRow))
let newHeight = (numberOfRows * cell.frame.size.height)
collectionHeight.constant = newHeight
collectionView.collectionViewLayout.invalidateLayout()
}
但是尽管调用了invalidateLayout - collectionView 的高度保持不变 - 50。
但是当我切换屏幕时,当我第二次使用 UICollectionView 打开该屏幕时,它会显示正确的高度。
我做错了什么,如何更新 UICollectionView 的高度?
我什至在collectionView.collectionViewLayout.invalidateLayout 之后尝试了collectionView.updateConstraints(),但仍然没有运气
更新
我也试过了
collectionView.layoutIfNeeded()
self.superview?.layoutIfNeeded()
但没有结果。
【问题讨论】:
标签: ios swift uicollectionview