UILabel не переносится после изменения текста - PullRequest
2 голосов
/ 04 февраля 2020

enter image description here

У меня есть метка пользовательского интерфейса, и я установил значение numberOfLines равным 0, поэтому оно переносится, когда это необходимо.

У меня есть текст меняется время от времени. Иногда это занимает всего одну строку, но оно обрезается вместо переноса, когда текст становится слишком длинным. Метка переносится только в том случае, если я переосмыслил sh представление таблицы, вызвав reloadData().

. Есть ли способ автоматически обернуть метку без вызова reloadData()?

Перед перезагрузкой таблицы представление:

enter image description here

После перезагрузки представления таблицы:

enter image description here

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Когда вы изменяете текст в метке в ячейке табличного представления, табличное представление автоматически не пересчитывает размеры ячейки.

Чтобы сделать это, вы либо перезагрузите данные - как вы видели - или выполните эти две строки:

tableView.beginUpdates()
tableView.endUpdates()

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

1 голос
/ 05 февраля 2020

Перезагрузка ячейки - верный способ позволить ей правильно расположиться Но вам не нужно вызывать reloadData (который перезагружает всю таблицу). Вы можете сделать reloadRows(at:with:), указав путь индекса только для этой строки. Он также позволяет вам указать природу анимации, которую вы хотите, если таковая имеется.

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