2-строчный текст UIButton
У меня есть UIButton, и текст кнопки заполняется рандомизатором.
Однако моя проблема заключается в том, что иногда количество символов в тексте слишком велико, что приводит к тому, что кнопка теперь показывает весь текст.
Можно ли проверить, слишком ли много символов, а затем удалить оставшуюся часть текста в другую текстовую строку? Итак, в основном для текстовых строк вместо одного для UIButton?
Ответы
Ответ 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.
![введите описание изображения здесь]()