UICollectionView 的标头高度取决于它在 Swift 中的内容



UICollectionView内,我在UILabel内有一个HeaderViewnumberOfLines设置为零以根据标签的文本更改标签的height。我希望标题的height取决于标签的frame

附言。 UICollectionView中的HeaderView并不像common view甚至UITableViewCell那么简单。此功能与UICollectionReusableView不同,与它们一起使用非常简单。

使用此功能查找标签的高度:-

func labelHeight(width:CGFloat , font:UIFont , text:String)->CGFloat{
let label:UILabel = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame.height
}

将此 UICollectionViewDelegateFlowLayout 方法添加到控制器中,并在此处查找高度和返回标头大小

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize{
let height = labelHeight(width: collectionView.bounds.width, font:pass the labelFont here , text:"Pass label text here")
return CGSize(width:collectionView.bounds.width , height: height + 10)
}

相关内容

  • 没有找到相关文章

最新更新