Почему я не могу автоматически вписать текст UILabel из кода, но я могу это сделать через IB? - PullRequest
0 голосов
/ 09 апреля 2020

Сценарий: Я просто хочу вписать строку в UILabel для каждого целевого устройства. То есть на одной модели iPad строка усекается. По другому это не так. Я подозреваю, что приложение более центрированное c против IB. Поэтому я хочу иметь возможность работать с UILabel программно.

Вот код:

class ViewController: UIViewController {
    @IBOutlet var myLabel: UILabel!

    @IBAction func addMessageAction(_ sender: UIBarButtonItem) {
        let msg = "Mother had a feeling, I might be too appealing. But I can understand."
        myLabel.text = msg
        myLabel.numberOfLines = 0
        myLabel.adjustsFontForContentSizeCategory = true
        myLabel.sizeToFit()

        myLabel.lineBreakMode = .byTruncatingTail
        myLabel.minimumScaleFactor = 0.5
    }

    @IBAction func exitAction(_ sender: UIBarButtonItem) {
        exit(0)
    }
}

Вот экран после того, как я нажал кнопку «сообщения»: enter image description here

Похоже, это работает только с тем, что я установил свойства UILabel в IB.

Почему это не работает с помощью кода?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Я попробовал ваш код, и он отлично работает. Есть ли какое-либо несоответствие ограничения Autolayout?

Вы можете сделать одну вещь, чтобы изменить размер шрифта, чтобы соответствовать ширине метки

myLabel.adjustsFontSizeToFitWidth = true
0 голосов
/ 10 апреля 2020

Дебаши sh дал мне правильный ответ. Я добавил его предложение: myLabel.adjustsFontSizeToFitWidth = true, и оно работало в режиме реального времени.

Интересно, что я использовал оригинальный фрагмент кода в общем проекте; и это сработало ... но не в моем маленьком доказательстве концепции.

Но опять же, добавленный оператор свойства myLabel добился цели здесь.

...