Я пытаюсь измерить высоту линий, чтобы разместить наложение на определенный текст в UITextView
.Конкретно, что я имею в виду под строками, это текст, разделенный \n
.Таким образом, одна строка может фактически занимать несколько строк, и это то, что я пытаюсь измерить.Я пробовал несколько разных подходов, однако я не могу правильно рассчитать высоту.Еще один недостаток моих текущих подходов заключается в том, что все они должны рассчитываться на главном синхронном потоке, что не идеально, потому что у меня много вычислений.
ПРИМЕР ПОДХОДА UI
measurement.font = UIFont(name: "Menlo", size: 16)
measurement.frame = CGRect(x: 0, y: 0, width: 10000, height: 50)
func heightForString(line: String) -> CGFloat {
var height : CGFloat = 0
measurement.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 10000)
measurement.sizeToFit()
height = measurement.frame.height
print(height, lineHeight)
measurement.frame = CGRect(x: 0, y: 0, width: 10000, height: 50)
return height
}
// Comparing the returned height to measurement.font?.lineHeight and padding shows the results make little sense... :(
ПРИМЕР ПЕЧАТИ
Должно быть 1 строка
30,0 18,625
Должно быть 3 строки
43,6666666666667 18,625