Подтвердить что ты не робот

UIButton с многострочной titleLabel в интерфейсеBuilder

Мне было интересно, есть ли хороший способ сделать UIButtons с многострочным titleLabel в Interface Builder? Я не нашел ни одного и положил отдельную UILabel поверх каждой кнопки и отслеживал ее цвет при печати, а другие события были не очень простыми.

Может быть, в коде есть лучшие альтернативы, если в IB нет такого пути?

4b9b3361

Ответ 1

Код:

Чтобы разрешить несколько строк, вы можете использовать:

button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

В iOS 6, UILineBreakModeWordWrap и UITextAlignmentCenter устарели, поэтому используйте:

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;

Конструктор интерфейсов:

  • В построителе интерфейса выберите UIButton
  • в правой части панели "Утилиты" в разделе "Инспектор атрибутов" вы увидите опцию "Разрыв строки"
  • Выберите Word Wrap

Ответ 2

Вы можете сделать это только в интерфейсе Builder несколькими способами.

  • Сначала просто установите функцию обертки. Это предлагает ограниченную возможность настройки.
  • Для большей настраиваемости измените "Обычный текст" на "Атрибутный текст", а затем вы можете делать большинство вещей без какого-либо кода.

Ответ 3

Просто чтобы упомянуть, если вы не хотите переносить слова, но все же хотите получить многострочный заголовок в UIButton, это можно сделать, установив lineBreakMode перед numberOfLines, Это связано с тем, что lineBreakMode, похоже, отменяет setOfLines, поэтому мы делаем это в этом порядке.

Swift:

button.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail

button.titleLabel?.numberOfLines = 2

button.setTitle(myTitle, для: UIControlState.normal)