[英]UICollectionview cell with dynamic height and half width
我試圖根據給定的文本創建具有半寬和動態高度的集合視圖(預期視圖)。
我正在嘗試通過(ViewController 中的代碼)來實現這一點
let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flowLayout.estimatedItemSize = CGSize(width: (UIScreen.main.bounds.width / 2), height: 2000.0)
flowLayout.itemSize = UICollectionViewFlowLayout.automaticSize
和(UICollectionviewCell 中的代碼)
override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
setNeedsLayout()
layoutIfNeeded()
let size = contentView.systemLayoutSizeFitting(layoutAttributes.size)
var frame = layoutAttributes.frame
frame.size.height = ceil(size.height)
layoutAttributes.frame = frame
return layoutAttributes
}
通過使用上面的代碼,我可以實現創建collectionview的實際視圖(半寬和動態高度)。 但集合視圖單元格高度不等於相鄰。 實際上,此集合視圖單元格高度應與相鄰單元格高度(具有最大高度)相同。 如何根據相鄰單元格大小更新單元格大小?
提前致謝
使用 UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout
collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath:
IndexPath) -> CGSize
{
//let padding: CGFloat = 5
let collectionViewSize = collectionView.frame.size.width / 2
return CGSize(width: collectionViewSize , height: 2000 )
}
在您的 CollectionViewCell class 中添加此代碼:
override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
setNeedsLayout()
layoutIfNeeded()
let size = contentView.systemLayoutSizeFitting(layoutAttributes.size)
var newFrame = layoutAttributes.frame
newFrame.size.height = ceil(size.height)
newFrame.size.width = UIScreen.main.bounds.width / 2
layoutAttributes.frame = newFrame
return layoutAttributes
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.