我希望能夠在sizeForItemAtIndexPath
函數中調用我的UICollectionViewCell
類。就像這樣:調用大小爲UICollectionView的單元格forItemAtIndexPath
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let cell = MyCollectionViewCell()
let itemHeights = cell.titleLabel.frame.size.height + cell.subtitleLabel.frame.size.height + 20
return CGSize(width: self.view.frame.size.width - 30, height: itemHeights + cell.thumbnail.frame.size.height)
}
的問題是,cell.titleLabel.frame.size.height
,cell.subtitleLabel.frame.size.height
和cell.thumbnail.frame.size.height
都返回nil
。我認爲這是因爲每當調用sizeForItemAtIndexPath
時,該單元尚未加載,而cellForItemAtIndexPath
尚未被調用。
我需要知道這個,因爲cell.titleLabel
可以是在cellForItemAtIndexPath
中設置的多行和寬度。
有什麼想法?
也許這可以幫助https://stackoverflow.com/questions/30405063/setting-cell-height-of-collectionview-doesnt-really-expand-cell-滾動 – ryantxr
您不應該使用'cellForItemAt:'以外的函數對某個單元格出隊列即使您將某個單元格出列,您也不會得到一個填充了該索引路徑值的單元格。您需要根據單元格的數據計算高度值,或者使用自動單元格高度併爲您的單元格提供合理的'estimatedSize' – Paulw11