gpt4 book ai didi

ios - 如何根据标签大小调整 CollectionView 高度

转载 作者:行者123 更新时间:2023-11-28 06:19:24 24 4
gpt4 key购买 nike

在我的代码中,我创建了具有页眉和页脚的 UICollectonView。

我的页脚高度应该是动态的,具体取决于文本大小。

文本可以从 1 行到 100 行。

这是我的代码。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
return CGSize(width:collectionView.frame.size.width, height:50.0)
}

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

switch kind {
case UICollectionElementKindSectionFooter:
let footer = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "SectionFooterCollectionReusableView", for: indexPath) as! SectionFooterCollectionReusableView

footer.lblDescription.text = composition?.desc
return footer


default: return UICollectionReusableView()
}
}

最佳答案

你可以给字符串扩展添加函数

extension String {

func heightWithConstrainedWidth(_ width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin,
attributes: [NSFontAttributeName: font], context: nil)
return boundingBox.height
}
}

然后在你的方法中计算文本高度

func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
if let string = composition?.desc {
let height = string.heightWithConstrainedWidth(width, font: font)
//calculate needed height
return CGSize(width:collectionView.frame.size.width, height:neededHeight)
}
return CGSize(width:collectionView.frame.size.width, height:50.0)
}

关于ios - 如何根据标签大小调整 CollectionView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133104/

24 4 0