багаторядкова етикетка iOS в конструкторі інтерфейсів


131

Як я можу зробити багаторядковий програмування UILabelв інтерфейсі для iOS? Я спробував, UITextViewале це не зовсім відповідало моїм потребам.

Як можна додати багаторядковий (текст) в мітку?


Чи можете ви пояснити, чому id не відповідав вашим потребам? TextView з функцією лише для читання - це те ж, що і мітка для рядків.
Шрееш

Здається, не виділена властивість кольору тексту.
Самулі Лехтонен

7
Для інших, хто відвідує це питання, не слідкуйте за прийнятою відповіддю з встановлення рядків на 5 або n. Замість цього встановіть його на 0 (Сортування нескінченності). Відповідь vijay див. Нижче.
GoodSp33d

Відповіді:


178

Ви можете використовувати numberOfLinesвластивість, яка визначає максимальну кількість рядків, якими може бути мітка. За замовчуванням - це 1. Якщо встановити його, 0означає, що етикетка матиме необмежені рядки .

Ви можете це зробити в коді:

textLabel.numberOfLines = 5 // for example

Або в Interface Builder:


Я спробував, це працює, коли я пишу етикетку, але коли я натискаю Enter, щоб прийняти це, все відбувається в одному рядку.
Самулі Лехтонен

3
А що widthз вашою етикеткою?
акашівський

8
Гаразд, я отримав це зараз, збільшив висоту, що зробив це. Дякую!
Самулі Лехтонен

Ви можете встановити рядки на 0 для необмежених ліній.
paulmelnikow

2
Дивіться також ця відповідь , який пояснює , як ввести мітку багатостроковий в IB: stackoverflow.com/a/992511/893113
paulmelnikow

117

Натисніть Control+, Enterщоб додати рядок у UILabel в Builder / Storyboard.


2
Дякую, це те, що я намагався зробити :)
mcont

Це має бути рішенням!
SunnySonic

14
Хороший. Але "Q" не потрібний, я думаю
Rendel

1
@Oliver Logic не закриває Xcode ... Ви неправильно прочитали. Він сказав, що CONTROL + Q + ENTER (а не CMD + Q). Але Rendel має рацію лише CONTROL + ENTER.
gaskbr

1
@Logic він не закриває Xcode ... Ви неправильно прочитали. Він сказав, що CONTROL + Q + ENTER (а не CMD + Q). Але Rendel має рацію лише CONTROL + ENTER.
gaskbr

47

Дякую AppleVijay!

Також для виклику sizeToFit, як це:

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

Висота буде автоматично обчислена.


11
Примітка: UILineBreakModeWordWrap застаріло станом на iOS6. Використовуйте [label setLineBreakMode: NSLineBreakWordWrapping]; замість цього.
John Feagans

5
Відсутнє "По". label.lineBreakMode = NSLineBreakByWordWrapping
користувач1872384

1
Використання NSLineBreakMode.ByWordWrapping замість UILineBreakModeWordWrap для стрижа
Деб

12

встановіть ширину мітки як потрібну малу, тоді використовуйте ІБ, щоб встановити перерви рядка для загортання слів

або використовувати з таким кодом

Я знайшов рішення.

Потрібно лише додати наступний код:

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

Кількість рядків видно в ІБ, у полі "Plain 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-коду 7.2

  1. - Виберіть UILabel

  2. - Атрибути інспектора

  3. - Текст - Виберіть Атрибутив

Після цього ви можете побачити ще якийсь атрибут, який ви можете додати до своєї мітки, в якій також можна знайти кількість рядків . Які роблять ваш ярлик багаторядковим .

Зображення X-коду для багатолінійного UILabel


Кількість рядків видно в IB із звичайними UILabels.
Грем Леа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.