在UICollectionView
内,HeaderView
内有UILabel
。 numberOfLines
设置为零可根据文本更改标签height
。我希望标题的height
依赖于标签的frame
。
PS。
UICollectionView中的HeaderView
并不像common view
甚至UITableViewCell
那么简单。与UICollectionReusableView
不同,此功能非常简单。
答案 0 :(得分:0)
使用此功能查找标签的高度: -
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)
}