Я создаю приложение с интерфейсом, похожим на мессенджер.
Я использую tableView для достижения этой цели.Каждая ячейка содержит UIView - пузырь сообщения и UILabel
- сообщение, вложенное в UIView
.
Он отлично работает с текстами небольшого размера, но по какой-то причине, когда UILabel
должен разбивать строки, он этого не делает, и все это в одну строку.Количество строк установлено на ноль.
Это мой класс обработки сообщений:
func commonInit() {
print(MessageView.frame.height)
MessageView.clipsToBounds = true
MessageView.layer.cornerRadius = 15
myCellLabel.numberOfLines = 0
let bubbleSize = CGSize(width: self.myCellLabel.frame.width + 28, height: self.myCellLabel.frame.height + 20)
print(bubbleSize.height)
MessageView.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: bubbleSize.width, height: bubbleSize.height)
if reuseIdentifier! == "Request" {
MessageView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner, .layerMinXMaxYCorner]
MessageView.backgroundColor = UIColor(red: 0, green: 122/255, blue: 1.0, alpha: 1.0)
} else {
MessageView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner, .layerMaxXMaxYCorner]
MessageView.backgroundColor = UIColor.lightGray
}
}
Функция вызова ячейки:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if queryCounter % 2 == 0 && indexPath.row % 2 == 0{
cellReuseIdentifier = "Answer"
} else {
cellReuseIdentifier = "Request"
}
let cell:MessageCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MessageCell
cell.myCellLabel.textColor = UIColor.white
cell.myCellLabel.text = self.messages[indexPath.row]
let height = cell.myCellLabel.text!.height(withConstrainedWidth: cell.myCellLabel.frame.width, font: cell.myCellLabel.font)
print(height)
cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)
return cell
}
Переменная высоты вычисляется на основепо размеру текста.Это показывает, что размер текста рассчитывается нормально - с учетом разрыва строки.Я не смог изменить высоту ячейки на основе этого расчета - ничего, что я пробовал, не работает.Я думаю, что это может быть проблемой с ограничениями.
Мои ограничения:
Как сделать разрыв строк?Пожалуйста, помогите.
РЕДАКТИРОВАТЬ: я просто заметил, что MessageView.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: bubbleSize.width, height: bubbleSize.height)
не влияет на то, что когда-либо на пузыри сообщения.