Как рассчитать размер текста перед созданием пользовательской ячейки

#iphone #ios

#iPhone #iOS

Вопрос:

Я создаю пользовательскую ячейку, которая содержит a UILabel , по умолчанию в UILabel ней будет две строки текста с включенным переносом, но бывают случаи, когда для текста потребуется три строки.

Тип и размер шрифта фиксированы и не могут быть изменены, и я пытаюсь определить способ вычисления длины NSString / UILabel перед созданием UITableView / CustomCell , чтобы можно было правильно установить высоту ячейки. Текст, который будет отображаться, будет состоять из нескольких разных слов, например, «Ваше имя XXXXX XXXXX, а ваш день рождения …«, а XXXXXXX — это переменный элемент.

Надеюсь, это имеет смысл, одна идея, которую я рассмотрел, — создать метод, содержащий a UILabel , который никогда не отображается, и заполнить его требуемым текстом, а затем проверить, используются ли 2 или 3 строки, но не уверен, как это сделать.

Есть ли более элегантный способ достижения этого?

Ответ №1:

Существует несколько функций UIKit для вычисления размера строки с различными режимами и шрифтами разрыва строки. Подробности см. В этом документе.

В частности sizeWithFont:constrainedToSize:lineBreakMode: , это может быть полезно для этого.

Ответ №2:

Я считаю NSString , что s sizeWithFont: constrainedToSize: lineBreakMode: — это метод, который вы ищете. Это возвращает a CGSize , высоту которого вы можете получить, чтобы определить высоту вашей ячейки (и, очевидно, установить рамку метки на правильный размер).

Примечание: вы должны передать CGSize параметр constrainedToSize: части, высота которой больше, чем вы предполагаете, но правильная максимальная ширина метки