Как добавить многострочный текст в UIButton? - PullRequest
349 голосов
/ 03 марта 2009

У меня есть следующий код ...

UILabel *buttonLabel = [[UILabel alloc] initWithFrame:targetButton.bounds];
buttonLabel.text = @"Long text string";
[targetButton addSubview:buttonLabel];
[targetButton bringSubviewToFront:buttonLabel];

... идея в том, что у меня может быть многострочный текст для кнопки, но текст всегда скрыт backgroundImage UIButton. Запись в журнал для отображения подпредставлений кнопки показывает, что UILabel была добавлена, но сам текст не виден. Это ошибка в UIButton или я делаю что-то не так?

Ответы [ 26 ]

0 голосов
/ 29 апреля 2019

In Swift 5.0 и Xcode 10.2

SharedClass пример написать один раз и использовать каждую посуду

Это ваш общий класс (например, вы используете все свойства компонентов)

import UIKit

class SharedClass: NSObject {

     static let sharedInstance = SharedClass()

     private override init() {

     }
  }

//UIButton extension
extension UIButton {
     //UIButton properties
     func btnMultipleLines() {
         titleLabel?.numberOfLines = 0
         titleLabel?.lineBreakMode = .byWordWrapping
         titleLabel?.textAlignment = .center        
     }
}

В вашем ViewController вызовите вот так

button.btnMultipleLines()//This is your button
0 голосов
/ 06 мая 2018

Я включил ответ jessecurry в STAButton , который является частью моей STAControls библиотеки с открытым исходным кодом. В настоящее время я использую его в одном из приложений, которые разрабатываю, и он работает для моих нужд. Не стесняйтесь открывать вопросы о том, как его улучшить, или присылайте мне запросы на извлечение.

0 голосов
/ 25 марта 2018

Свифт 4,0

btn.titleLabel?.lineBreakMode = .byWordWrapping
btn.titleLabel?.textAlignment = .center
btn.setTitle( "Line1\nLine2", for: .normal)
0 голосов
/ 03 августа 2017
self.btnError.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping

self.btnError.titleLabel?.textAlignment = .center

self.btnError.setTitle("Title", for: .normal)
0 голосов
/ 10 марта 2009

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

0 голосов
/ 03 марта 2009

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

Другими словами:

[button.superview addSubview:myLabel];
myLabel.center = button.center;
...