UILabel - текст для обгортання слів


150

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

Відповіді:


301

Якщо встановити numberOfLines0 (і мітку для обгортання слів), мітка автоматично загортає та використовує стільки рядків, скільки потрібно.

Якщо ви редагуєте UILabelIB, ви можете ввести кілька рядків тексту, натиснувши option+, return щоб отримати розрив рядка - returnтільки редагування закінчиться.


124
Для уточнення для нообів, як я, це було б: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Брайан Москау

46
В iOS 6 і пізніших версіях використовуйте NSLineBreakByWordWrapping, ні UILineBreakModeWordWrap.
Аарон Брагер

3
Можливо, вам також знадобляться такі: label.autoresizingMask = UIViewAutoresizingFfleHeight;
William Grand

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)


Хочете розібратися, як це відрізняється?
Майк

Я думаю, я мав на увазі лише те, що називання відрізняється. Це, мабуть, знову швидко змінилося3
Натан

У режимі розриву рядків слід встановити значення замовчування за замовчуванням
MobileMon

@MobileMonin мій досвід, який не завжди так. Може, ІБ змінить його за деяких обставин?
Натан

label.lineBreakMode = NSLineBreakByWordWrapping in Obj C
Nupur Sharma

2

Xcode 10, Swift 4

Обгортання тексту для мітки також можна виконати на Дошці аркушів, вибравши Мітку та скориставшись інспектором атрибутів.

Рядки = 0 Linebreak = Обертання слів

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


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