TextFieldのテキストの高さと同じ距離でラベルを垂直方向に変換するアニメーションを作成する必要があるという問題が発生しました。ほとんどの場合、textField.bounds.heigt
しかし、textFieldの高さがテキストの高さよりも大きい場合、それは私には何の役にも立ちません。だから私は知る必要があります:文字列テキストの行の高さをそのUIFont
から計算する方法?
重複について:私が必要としているものとは少し異なります。その回答(私の回答で参照しました)は、1)文字列2)幅3)フォントに応じて全体の高さを取得します。必要なのはフォントにのみ依存する1行の高さです。
UIFont
にはプロパティlineHeight
があります:
if let font = _textView.font {
let height = font.lineHeight
}
ここで、fontはあなたのフォントです
私はそれを行う方法を探していて、これを見つけました answer ここで、文字列と特定のフォントのサイズを計算するためのString
拡張子があります。私はそれを私が望むことをするように修正しました(フォントを使用して書かれたテキストの行の高さを取得します。):
extension UIFont {
func calculateHeight(text: String, width: CGFloat) -> CGFloat {
let constraintRect = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude)
let boundingBox = text.boundingRect(with: constraintRect,
options: NSStringDrawingOptions.usesLineFragmentOrigin,
attributes: [NSAttributedStringKey.font: self],
context: nil)
return boundingBox.height
}
}
これが誰かがそれを探しているのに役立つことを願っています。 (将来は自分自身になるかもしれません)。