UILabel не обновляется, чтобы соответствовать UILabel.text - PullRequest
0 голосов
/ 02 октября 2019

Когда я изменяю атрибут текста моего UILabel, он только частично обновляется в приложении.

Я пытался поместить его в функцию viewDidLoad и в отдельную выделенную функцию, но безрезультатно. Если после обновления я печатаю Label.text на консоль, то он корректный, но на экране он отображается неправильно.

Рассматриваемый класс:

@IBOutlet weak var PromptLabel: UILabel!
var labelText = "";

override func viewDidLoad() {
    super.viewDidLoad()
    print("view loaded")
    self.PromptLabel.text = "Tell Us... " + labelText;
    // Do any additional setup after loading the view.
}

Вызывается по:

 @IBAction func UsingButtonPressed(_ sender: Any) {
    (sender as AnyObject).setTitleColor(UIColor.red, for: .normal)
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil);
    let secondController = storyBoard.instantiateViewController(withIdentifier: "Secondary View Controller") as! SecondaryViewController;
    secondController.labelText = "What You're Using Today"
    self.present(secondController, animated: true, completion: nil)

}

Метка должна отображаться как «Скажите нам ... Что вы используете сегодня»но он показывает только «Скажи U ...», что не имеет смысла.

image

1 Ответ

2 голосов
/ 02 октября 2019

Необходимо убедиться, что ограничение ширины UILabel достаточно широкое, чтобы вместить текст. В противном случае он обрезается, и ..., который вы видите, потому что разрыв строки для метки установлен на truncating tail, что означает, что конец строки будет заменен на ..., если метка слишком узкая.

Так что это проблема построителя интерфейса, а не специфичная для Swift проблема. Текст метки корректно обновляется, пользовательский интерфейс просто не может правильно его отобразить.

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

...