2016-02-29 71 views
7

我遇到了一个问题,我需要将textField文本高度的相同距离垂直翻译为标签。在大多数情况下,只是textField.bounds.heigt,但如果textField的高度大于文本高度,对我来说不会有任何好处。所以我需要知道: 如何从UIFont中计算字符串文本的行高?Swift如何从其字体中计算一行文本高度

关于重复: 有什么我需要的有点不同。那个答案(我在我的答案中提到)得到的总高度取决于1)字符串2)宽度3)字体。我需要的是单线高度仅仅依靠字体

+1

[斯威夫特基于字符串的UILabel的找出尺寸(HTTP的可能重复://计算器。 com/questions/30450434 /基于uilabel的数字大小的字符串) – TylerH

+0

这与我所需要的有点不同。那个答案(我在我的答案中提到)得到的总高度取决于1)字符串2)宽度3)字体。我需要的是**一行高度只能在字体** – Ismail

回答

6

UIFont有propperty lineHeight是 水木清华这样

 if let font = _textView.font { 
     let height = font.lineHeight 
    } 

其中的字体是你的字体

3

我一直在寻找一种方法来做到这一点,并找到这个answer它有一个String扩展名来计算字符串和给定字体的大小。我已经修改了它做我想做的(得到的文本行高度使用的字体写):

extension UIFont { 

    var height:CGFloat { 
    let constraintRect = CGSize(width: CGFloat.max, height: CGFloat.max) 

    let boundingBox = "Anytext".boundingRectWithSize(constraintRect, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: self], context: nil) 

    return boundingBox.height 
    } 
} 

我希望这可以帮助别人寻找它。 (可能是我自己未来的)。