#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:
части, высота которой больше, чем вы предполагаете, но правильная максимальная ширина метки