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

131

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

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

Самули Лехтонен
источник
Можете ли вы объяснить, почему id не соответствовал вашим потребностям? TextView с доступом только для чтения - это то же самое, что и многострочная метка.
Shreesh 02
Кажется, что свойство цвета текста не выделено.
Самули Лехтонен
7
Для других, посещающих этот вопрос, не следуйте принятому ответу установки строк на 5 или n. Вместо этого установите его на 0 (вроде бесконечности). Посмотрите ответ Виджея ниже.
GoodSp33d

Ответы:

178

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

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

textLabel.numberOfLines = 5 // for example

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

akashivskyy
источник
Я пробовал, это работает, когда я пишу ярлык, но когда я нажимаю ввод, чтобы принять, все идет в одну строку.
Самули Лехтонен
3
А какой widthу тебя лейбл?
akashivskyy 02
8
Хорошо, теперь я получил, увеличил высоту, вот и получилось. Спасибо!
Самули Лехтонен
Вы можете установить Lines на 0 для неограниченного количества строк.
paulmelnikow 01
2
См. Также этот ответ, в котором объясняется, как ввести многострочную метку в IB: stackoverflow.com/a/992511/893113
paulmelnikow 01
117

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

user1233894
источник
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;
Vijay-Apple-Dev.blogspot.com
источник
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, но желательно иметь минимальный масштабный коэффициент, чтобы текст помещался в рамку метки.

Krunal
источник
2

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

siddhant
источник
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

Codecraft
источник
Количество строк отображается в IB с обычными UILabels.
Graham Lea