Создание гибкой UILabel - PullRequest
3 голосов
/ 29 февраля 2012

Я получил приложение с некоторыми текстовыми данными.

В TableView пользователь выбирает одну ячейку и затем видит UIViewController с относительными текстовыми данными.Но информационный текст может быть от 1 строки до N. Как можно создать такую ​​UILabel, которая будет менять размер в зависимости от размера текста?

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

В дополнениях NSString UIKit вы можете найти следующий метод:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode

с этим вы можете определить оптимальную высоту или ширину вашего ярлыка. Например, чтобы получить оптимальную высоту UILabel, вы можете создать категорию на UILabel следующим способом:

- (float)optimalHeight
{
    return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, UINTMAX_MAX) lineBreakMode:self.lineBreakMode].height;
}

после этого вы можете просто поменять рамку вашей UILabel. Не забудьте установить номер строки вашего ярлыка равным 0.

2 голосов
/ 29 февраля 2012

Другим решением было бы сделать это внутри кода с помощью метода sizeWithFont.Вы можете найти более подробную информацию здесь: iOS: динамическая высота UILabel с использованием sizeWithFont: constrainedToSize: lineBreakMode: не работает

Если высота меняется, вы можете установить максимальный размер метки с помощьюстандартная ширина надписи и высота 9999, а затем проверьте, какой будет рекомендуемый размер для вашего текста, используя шрифт надписи

2 голосов
/ 29 февраля 2012

Вы можете установить свойство numberOfLines метки, чтобы указать, сколько строк оно может переносить.Если вы установите его на ноль, он может переноситься на любое количество строк.Вы можете установить это свойство в своем кончике.

Однако вам также нужно установить его фрейм достаточно большим, чтобы показать все линии.Самый простой способ - отправить сообщение sizeToFit после того, как вы установили его текст.Он сохранит свою ширину (я думаю), но изменит свою высоту, чтобы она была достаточно высокой, чтобы отображать все ее строки после переноса.

Если у вас может быть столько текста, что он не помещается на экране (илине помещается в пространство, доступное для вашего ярлыка), вместо него следует использовать UITextView.A UITextView позволяет прокручивать автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...