Перенос слов UIButton не работает при вводе текста? - PullRequest
0 голосов
/ 20 мая 2018

У меня есть UIButton, это просто переход на другую страницу.

Я установил заголовок для атрибута, а затем выбрал перенос слов.Это работает нормально, второе слово переносится на следующую строку.

Однако все это выравнивается по левому краю.Когда я выбираю «Выровнять центр» (используя кнопки прямо под «Заголовком», перенос слов больше не работает, а просто запускается ...., поэтому вы не можете видеть все это. (Например, «следующий ра» вместо «следующий»страница ")

Я что-то здесь упускаю? Кажется, что это такая банальная вещь! Здесь есть старый ответ не удается заставить перенос слов работать на UIButton , но он старыйи использует код - конечно, вам не нужен код для центрирования текста кнопки, если вы хотите обернуть его в 2 строки !?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Я установил название для приписанного, а затем выбрал перенос слов.Это прекрасно работает, второе слово переносится на следующую строку.Тем не менее, все выровнено по левому краю.

Как только вы решили использовать приписанную строку, вы должны сделать все с приписанной строкой.Поэтому присвойте вашей приписанной строке стиль абзаца, который центрирует текст.

    let para = NSMutableParagraphStyle()
    para.alignment = .center
    para.lineBreakMode = .byWordWrapping
    let s = NSAttributedString(
        string: "Hello World", attributes: [.paragraphStyle : para])
    self.button.setAttributedTitle(s, for: .normal)

Вам также необходимо установить метку заголовка кнопки, чтобы разрешить несколько строк.

    self.button.titleLabel?.numberOfLines = 0

Результат:

enter image description here

Конечно, вам не нужен код для центрирования текста кнопки, если вы хотите обернуть ее в 2 строки!?

Не центрировать, нет;Вы можете установить центрирование в раскадровке.Таким образом, вы можете удалить первый пакет кода и настроить его в раскадровке.Но вы должны использовать код, чтобы превратить метку заголовка в многострочную метку:

    self.button.titleLabel?.numberOfLines = 0

Нет способа сделать это в раскадровке, потому что у вас нет доступа к метке заголовкаесть.

0 голосов
/ 20 мая 2018

Я только что поиграл с этим, и я обнаружил, что он работает, если вы выбрали «перенос символов», а не «перенос слов», как только вы выбрали выравнивание по центру.

Если у кого-то есть лучшее решение, пожалуйста, добавьте его, так как я думаю, что это может иметь проблемы, если вы слегка измените ширину и т. Д. При использовании автоматического макета для разных размеров экрана и т. Д., Если вы хотите адаптировать его ширину, чтобы это моглоне лучшее решение, но оно работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...