UILabel - Wordwrap текст


150

Можно ли как-нибудь пометить текст в виде надписи как необходимый? У меня разрывы строк установлены на перенос слов, и метка достаточно высокая для двух строк, но, похоже, она будет переноситься только на разрывы строк. Нужно ли добавлять разрывы строк, чтобы сделать перенос правильно? Я просто хочу обернуть его, если он не может поместиться горизонтально.

Ответы:


301

Если вы установите numberOfLinesзначение 0 (и метка для переноса по словам), метка будет автоматически переноситься и использовать столько строк, сколько необходимо.

Если вы редактируете UILabelв IB, вы можете ввести несколько строк текста, нажав option+, return чтобы получить разрыв строки - returnтолько редактирование закончится.


124
Чтобы уточнить для таких нубов, как я, это будет: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Брайан Мескау

46
В iOS 6 и новее пользуйтесь NSLineBreakByWordWrapping, а не UILineBreakModeWordWrap.
Аарон Брагер,

3
Вам также может понадобиться следующее: label.autoresizingMask = UIViewAutoresizingF FlexibleHeight;
Уильям Гранд

6
label.lineBreakMode = .ByWordWrappingи label.numberOfLines = 0по-быстрому
AFraser

9
Для тех, кому это было неочевидно (например, мне): UILabel должен иметь какое-то ограничение на его ширину (либо из фактического ограничения ширины, либо из ограничения полей); иначе это не обернется.
jcady

27

UILabelимеет свойство, lineBreakModeкоторое вы можете установить согласно вашему требованию.


11
Msgstr "У меня разрывы строк установлены на перенос слов". Это только переносит фактические разрывы строк, оно не будет автоматически прерываться, если оно будет длинным.
Codezy

19

В Swift вы бы сделали это так:

    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.numberOfLines = 0

(Обратите внимание, что константа lineBreakMode работает иначе, чем в ObjC)


Хотите уточнить, как это отличается?
Майк

Я думаю, я имел в виду только то, что наименование отличается. Это, вероятно, снова изменилось в swift3
Натан

Режим
перевода

@MobileMonin мой опыт, который не всегда так. Может быть, IB меняет это в некоторых обстоятельствах?
Натан,

label.lineBreakMode = NSLineBreakByWordWrapping в Obj C
Нупур Шарма

2

Xcode 10, Swift 4

Обтекание текста для метки также можно выполнить на раскадровке, выбрав «Метка» и используя инспектор атрибутов.

Строки = 0 LineBreak = Word Wrap

введите описание изображения здесь


2
Используя ярлык branBrand-New, добавляя его непосредственно в представление, он все равно генерирует однострочный ярлык (с шириной, превышающей ширину телефона) для меня, несмотря на то, что для строк установлено значение 0, а для переноса строк - Word Wrap. Есть ли другая настройка, которая может потребоваться? Нужно ли прикреплять дополнительный код?
phihag
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.