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

2-строчный текст UIButton

У меня есть UIButton, и текст кнопки заполняется рандомизатором. Однако моя проблема заключается в том, что иногда количество символов в тексте слишком велико, что приводит к тому, что кнопка теперь показывает весь текст.

Можно ли проверить, слишком ли много символов, а затем удалить оставшуюся часть текста в другую текстовую строку? Итак, в основном для текстовых строк вместо одного для UIButton?

4b9b3361

Ответ 1

Objectivc-С

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.numberOfLines = 2;
button.titleLabel.textAlignment = NSTextAlignmentCenter; // if u need

else используйте этот

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

Swift

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.numberOfLines = 2
button.titleLabel!.textAlignment = .Center

else используйте этот

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.textAlignment = .Center
button.setTitle("Line1\nLine2", forState: .Normal)

Swift3

buttonName.titleLabel!.lineBreakMode = .byWordWrapping
buttonName.titleLabel!.textAlignment = .center
buttonName.setTitle("Line1\nLine2", for: .normal)

Ответ 2

Предполагая, что вы используете раскадровку или файл .xib, нажмите на свою кнопку и откройте инспектор атрибутов справа, затем в разделе "Кнопка" найдите поле "Линейный разрыв". Отбросьте это, и вы увидите 2 варианта (среди прочих) - "Обертка символов" и "Перенос слов", они предоставляют функциональные возможности, которые вы используете.

В качестве альтернативы В коде вы можете использовать один из следующих

[BUTTON setLineBreakMode:NSLineBreakByWordWrapping]
[BUTTON setLineBreakMode:NSLineBreakByCharWrapping]

Ответ 3

У меня возникла проблема с увеличением UILabels при использовании автоматического макета, а не для переноса слов. Решение состояло в том, чтобы установить предпочтительнуюMaxLayoutWidth, чтобы заставить ее обернуть текст.

Для кнопки вы можете сделать то же самое, используя:

button.titleLabel.preferredMaxLayoutWidth = <max width required>.

Ответ 4

В построителе интерфейса измените режим Разрыв строки на Word Wrap для элемента UIButton:

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

И чтобы центрировать текст, сделайте заголовок Attributed вместо Plain.

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