Многострочная метка iOS в конструкторе интерфейсов


131

Как сделать многострочным UILabelв конструкторе интерфейсов для iOS? Я попробовал, UITextViewно это не совсем соответствовало моим потребностям.

Как добавить в метку многострочный текст?


Можете ли вы объяснить, почему id не соответствовал вашим потребностям? TextView с доступом только для чтения - это то же самое, что и многострочная метка.
Shreesh 02

Кажется, что свойство цвета текста не выделено.
Самули Лехтонен

7
Для других, посещающих этот вопрос, не следуйте принятому ответу установки строк на 5 или n. Вместо этого установите его на 0 (вроде бесконечности). Посмотрите ответ Виджея ниже.
GoodSp33d

Ответы:


178

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

Вы можете сделать это в коде:

textLabel.numberOfLines = 5 // for example

Или в Интерфейсном Разработчике:


Я пробовал, это работает, когда я пишу ярлык, но когда я нажимаю ввод, чтобы принять, все идет в одну строку.
Самули Лехтонен

3
А какой widthу тебя лейбл?
akashivskyy 02

8
Хорошо, теперь я получил, увеличил высоту, вот и получилось. Спасибо!
Самули Лехтонен

Вы можете установить Lines на 0 для неограниченного количества строк.
paulmelnikow 01

2
См. Также этот ответ, в котором объясняется, как ввести многострочную метку в IB: stackoverflow.com/a/992511/893113
paulmelnikow 01

117

Нажмите Control+, Enterчтобы добавить строку в UILabel в Интерфейсном Разработчике / Раскадровке.


2
Спасибо, это то, что я пытался сделать :)
mcont

Это должно быть решением!
SunnySonic

14
Хороший. Но «Q», я думаю, необязателен
Рендель

1
@Oliver Logic не выходит из Xcode ... Вы неправильно прочитали. Он сказал CONTROL + Q + ENTER (а не CMD + Q). Но Рендель прав, здесь достаточно только CONTROL + ENTER.
gaskbr

1
@Logic не выходит из Xcode ... Вы неправильно прочитали. Он сказал CONTROL + Q + ENTER (а не CMD + Q). Но Рендель прав, здесь достаточно только CONTROL + ENTER.
gaskbr

47

Спасибо, AppleVijay!

Также для вызова sizeToFit, например:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

Высота будет рассчитана автоматически.


11
Примечание. UILineBreakModeWordWrap устарел с iOS6. Используйте [label setLineBreakMode: NSLineBreakWordWrapping]; вместо.
Джон Фиганс

5
Отсутствует "By". label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
используйте NSLineBreakMode.ByWordWrapping вместо UILineBreakModeWordWrap для swift
Deb

12

установите ширину метки по мере необходимости, затем используйте IB, чтобы установить перенос строки на перенос слов

или используйте с таким кодом

Я нашел решение.

Достаточно добавить следующий код:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

5

Установите нулевое количество строк для динамической текстовой информации, это будет полезно, когда ваш текст меняется.

Программно (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Использование Inetrface Builder

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

Примечание. Устанавливать не обязательно Minimum Font Scale, но желательно иметь минимальный масштабный коэффициент, чтобы текст помещался в рамку метки.


2

Количество строк отображается в IB с обычным набором строк UILabels, равным 0. Он создаст несколько строк в соответствии с предоставленным пространством для метки.


1

В iOS7 (Xcode5) вы должны установить строки UILabel 0для неограниченного множественного ввода в раскадровке.
Наиболее важно установить height of the UILabelбанку для строк ввода, которые вы собираетесь установить.


0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};

0

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


0

Я долго боролся с этим. Я просто хотел, чтобы текст моего ярлыка отображался во второй строке. Но что бы я ни делал, это просто переполняло поле UILabel. Для меня сработало изменение автоизменения в инспекторе размера. Простое исправление.

Может быть, кому-то это пригодится, кто ищет нечто подобное.


-2

Для X-Code 7.2

  1. - Выберите UILabel

  2. - Инспектор атрибутов

  3. - Текст - Выбрать с атрибуцией

После этого вы можете увидеть еще один атрибут, который вы можете добавить в свой ярлык, в котором вы также можете найти количество строк . Что делает ваш лейбл многострочным .

Изображение X-Code для многострочного UILabel


Количество строк отображается в IB с обычными UILabels.
Graham Lea
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.