it-swarm.com.ru

UIButton с многострочным titleLabel в InterfaceBuilder

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

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

20
Sergey Grischyov

Код:

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

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
56
Mrunal

Вы можете сделать только в Интерфейсном Разработчике несколько способов.

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

В случае, если вы используете только простой XCode 9.4:

Установите Разрыв строки на любую опцию (чтобы включить numberOfLines) в инспекторе Атрибутов:

 The first step in XCode

Тогда вы можете установить KeyPath как

titleLabel.numberOfLines

в личном инспекторе:

 The second step in XCode

1
Darius Miliauskas

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

Swift:

button.titleLabel? .lineBreakMode = NSLineBreakMode.byTruncatingTail

button.titleLabel? .numberOfLines = 2

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

0
saigen