2
我有一個UICollectionViewLayout子類,其中包含一個多行UILabel的補充視圖。問題是,並非所有的文本在某個特定點都是可見的,我怎樣才能使補充視圖的高度等於其內容?CollectionViewLayout補充視圖高度等於內容
我有一個UICollectionViewLayout子類,其中包含一個多行UILabel的補充視圖。問題是,並非所有的文本在某個特定點都是可見的,我怎樣才能使補充視圖的高度等於其內容?CollectionViewLayout補充視圖高度等於內容
您可以使用以下功能查找文本的高度: -
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 height:label.frame.height
}
再加入這個UICollectionViewDelegateFlowLayout方法到您的控制器和你的頭回尺寸
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize{
// Pass parameter into this function according to your requirement
let height = labelHeight(width: collectionView.bounds.width , font:UIFont , text:"")
return CGSize(width:collectionView.bounds.width , height: height + 10)
}
也許這將幫助您:https://stackoverflow.com/a/41607018/5381663 – kamil3