Автоматическое изменение размера текста с использованием UILabel в качестве подпредставления UIButton - swift - PullRequest
0 голосов
/ 26 августа 2018

Я создаю пример приложения, в котором есть тексты на UIButton, а также image, для image и text subView из UIButton.Я работал с различными устройствами, такими как iPhone 5, iPhone X, и результат не такой, как я ожидал, потому что если запустить с устройством, экран которого меньше iPhone X, то текст будет всплывать за пределами кнопки.

Что я сделал до сих пор:

lazy var myLabelButton: UILabel = {

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "titleName"
    label.textColor = .white
    label.font = UIFont(name: "SFCompactText-Regular", size: 14)
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5
    label.sizeToFit()
    return label
}()

Я искал некоторые ресурсы, и они позволили мне применить эти функции:

label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
label.sizeToFit()

Эти три функции не работают

Вот весь код:

button.addSubview(myLabelButton)
NSLayoutConstraint.activate([
  myLabelButton.centerXAnchor.constraint(button.centerXAnchor),
  myLabelButton.centerYAnchor.constraint(button.centerYAnchor),
  myLabelButton.widthAnchor.constraint(button.widthAnchor)
])

Есть какое-нибудь решение для этого?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Вот, пожалуйста, у меня есть решение

    let label = UILabel()
    label.numberOfLines = 0
    label.textColor = .white

    let button = UIButton()
    button.backgroundColor = .blue

    view.addSubview(button)
    button.addSubview(label)

    label.text = Array(repeating: "Hello", count: 100).joined()

    button.translatesAutoresizingMaskIntoConstraints = false
    label.translatesAutoresizingMaskIntoConstraints = false

    // button constraint
    NSLayoutConstraint.activate([
        view.leadingAnchor.constraint(equalTo: button.leadingAnchor),
        view.trailingAnchor.constraint(equalTo: button.trailingAnchor),
        view.centerYAnchor.constraint(equalTo: button.centerYAnchor)
    ])


    // label constaint
    NSLayoutConstraint.activate([
        button.leadingAnchor.constraint(equalTo: label.leadingAnchor),
        button.trailingAnchor.constraint(equalTo: label.trailingAnchor),
        button.topAnchor.constraint(equalTo: label.topAnchor),
        button.bottomAnchor.constraint(equalTo: label.bottomAnchor)
    ])

label image

0 голосов
/ 26 августа 2018

Попробуйте использовать sizeToFit () на самой кнопке, а не на ярлыке.

Например

button.setTitle("Hello world", for: .normal)
button.sizeToFit()
...