Я создаю приложение на основе чата, которое использует UITableView
для хранения всех сообщений в беседе. Чтобы создать пузырь чата, у меня есть представление-оболочка (wrapView), которое ограничено верхней, нижней, правой и левой частью TableViewCell. В качестве подвида у меня есть UILabel
, который содержит отправленное сообщение. Я использовал preferredMaxLayoutWidth
для UILabel
, чтобы текст внутри метки не выходил за пределы родительского представления. Количество строк для UILabel
также установлено равным 0. Я установил следующие параметры в функции cellForRowAtIndexPath
:
// Get the cell
let cell = tableView.dequeueReusableCellWithIdentifier("LeftBubbleText") as! LeftTextTableViewCell
// Set the message
cell.messageLabel.text = message
// Set the message label's max width
cell.messageLabel.preferredMaxLayoutWidth = cell.wrapView.frame.width - 16
Когда разговор загружается впервые, текст внутри UILabel
не переносится должным образом. Он усекается в конце представления оболочки. Но когда ячейка прокручивается за пределы экрана, а затем снова появляется, текст прекрасно оборачивается после повторного использования ячейки.
Как я могу убедиться, что текст внутри UILabel правильно обернут при начальной загрузке, а не только при повторном использовании ячейки?