如何计算我的UITextView中文本的高度?

问题描述:

我怎么知道这个textView里面的文本的高度?如何计算我的UITextView中文本的高度?

lazy var textView: UITextView = { 
    let tv = UITextView() 
    tv.textColor = .white 
    tv.translatesAutoresizingMaskIntoConstraints = false 
    tv.isEditable = false 
    tv.backgroundColor = .white 
    tv.text = "Se non vuoi vedere di nuovo questa presentazione clicca sul bottone qui sotto..." 
    tv.textAlignment = .center 
    tv.font = UIFont(name: "Avenir-Light", size: 22) 
    return tv 
}() 
+1

你想达到什么目的? –

+1

您是否想知道在设置宽度的textView中为文本和字体设置的最小高度? – boidkan

+0

不,为了垂直居中在UITextView中的文本我需要知道文本的高度 –

您可以计算文本高度象下面这样:

let sizeThatFitsTextView = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat(MAXFLOAT))) 
let heightOfText = sizeThatFitsTextView.height 

在我的情况

我正在计算标签

func heightForLabel(text:String, font:UIFont, width:CGFloat) -> CGFloat 
    { 
     let label:UILabel = UILabel(frame: CGRect(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 

    } 
+0

您传递给函数的参数宽度,究竟是什么? –

+0

宽度我通过标签的宽度 –

的高度,我发现我的this..in情况下,它的工作原理:

func returnStringWidth(font: UIFont, text: String) -> CGSize { 
    let fontAttributes = [NSFontAttributeName: font] 
    let size = (text as NSString).size(attributes: fontAttributes) 

    return size 
}