TableView Lag при использовании ячеек с переменным размером - PullRequest
1 голос
/ 17 января 2020

В моем приложении есть несколько табличных представлений, но у табличных представлений с фиксированным размером ячейки нет проблем. Тем не менее, два вида таблицы, которые я использую, имеют переменный размер ячейки, и это вызывает запаздывание / заикание (когда появляются ячейки с большим значением высоты). Сначала я думал, что это может быть потому, что моя камера разработана очень неэффективно. Однако даже простые ячейки табличного представления с только текстовым полем (переменная высота) и меткой (фиксированная высота) вызывают заикание.

Ограничения макета ячейки: 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

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