В моем приложении есть несколько табличных представлений, но у табличных представлений с фиксированным размером ячейки нет проблем. Тем не менее, два вида таблицы, которые я использую, имеют переменный размер ячейки, и это вызывает запаздывание / заикание (когда появляются ячейки с большим значением высоты). Сначала я думал, что это может быть потому, что моя камера разработана очень неэффективно. Однако даже простые ячейки табличного представления с только текстовым полем (переменная высота) и меткой (фиксированная высота) вызывают заикание.
Ограничения макета ячейки: 1. Метке присваивается высота 20, закрепленная 0 от нижний с 5px трейлингом и лидирующим 2. TextView прикреплен 0 сверху и 0 к метке под ним с 5px трейлингом и лидирующим
Я перепробовал все и посмотрел много статей, но не смог найти ни одного полезное решение. Вот файл ячейки:
import UIKit
class ConvoCell: UITableViewCell {
@IBOutlet weak var messageView: UITextView!
@IBOutlet weak var BgViewRightContraint: NSLayoutConstraint!
@IBOutlet weak var BgViewLeftContraint: NSLayoutConstraint!
@IBOutlet weak var TimingInfo: UILabel!
@IBOutlet weak var bgView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func datainit(message: String, time: String, type: Int32){
self.messageView.text = message
self.TimingInfo.text = time
if (type == 1){
bgView.backgroundColor = .orange
self.messageView.textColor = .white
BgViewRightContraint.constant = 5
BgViewLeftContraint.constant = 50
TimingInfo.textColor = .white
} else {
bgView.backgroundColor = .white
self.messageView.textColor = .black
self.TimingInfo.textColor = .black
BgViewRightContraint.constant = 50
BgViewLeftContraint.constant = 5
}
}
}
Вот код для моего cellForRowAt:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageBubble") as? ConvoCell else {
return UITableViewCell()
}
cell.selectionStyle = .none
messagetable.separatorStyle = .none
var currentMessage: Message!
currentMessage = chat.fetchedMessages[indexPath.row]
cell.datainit(message: currentMessage.body!, time: currentMessage.timingInfo!, type: currentMessage.type)
return cell
}
В viewdidLoad () я добавил оценочную rowHeight а также автоматические c размеры: messagetable.estimatedRowHeight = 185 messagetable.rowHeight = UITableView.automaticDimension