У меня есть uitableview с ячейками, которые отображают сообщения чата. Некоторые сообщения содержат кодовые блоки, которые я рендеринг внутри ячейки, динамически создавая и добавляя пользовательские экземпляры CodeBlockView в представление стека в ячейке. Вот выдержка из My TableView (_: cellforrowat Метод:
. Загрязняет и иногда застревает. Что я подозреваю:
Создание и настройка представлений в CellForrowat является тяжелой, а блокирует основную плату. /> < /li>
Отсутствие повторного использования представлений для просмотров кодовых блоков внутри ячеек.
Чего я хочу достичь: < /strong> < /p>
< /li>
Плавное прокрутка, даже когда несколько кодовых блоков появляются внутри ячеек. дорогостоящее представление о создании на каждом прокрутке. < /p>
< /li>
< /ul>
Может ли кто -нибудь предложить лучшие практики или решения для эффективной обработки динамических подзоров, таких как пользовательские просмотры кодовых блоков внутри таблицы ячейки? ячейка.
У меня есть uitableview с ячейками, которые отображают сообщения чата. Некоторые сообщения содержат кодовые блоки, которые я рендеринг внутри ячейки, динамически создавая и добавляя пользовательские экземпляры CodeBlockView в представление стека в ячейке. Вот выдержка из My TableView (_: cellforrowat :) Метод: [code]func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let row = indexPath.row
if let reasoning = message.reasoningContent, let time = message.think_time, time >= 0 { chatCell.collapseButton.isHidden = false chatCell.reasoningView.isHidden = false chatCell.thinkLabel.text = reasoning chatCell.thoughtForLabel.text = "Thought for \(time)s" if AppConstants.expandedRowIndex.contains(row) { chatCell.reasoningView.borderWidth = 0.8 chatCell.thinkFooterView.isHidden = false chatCell.chevronImageView.image = .chevronUp } else { chatCell.reasoningView.borderWidth = 0 chatCell.thinkFooterView.isHidden = true chatCell.chevronImageView.image = .chevronUp } } else { chatCell.reasoningView.isHidden = true chatCell.collapseButton.isHidden = true }
let document = Document(parsing: message.content) let results = markdown.parserResults(from: document) for result in results { if result.isCodeBlock { let spacer = UIView() spacer.heightAnchor.constraint(equalToConstant: 10).isActive = true
. Загрязняет и иногда застревает. [b] Что я подозреваю: [/b] [list] [*] Создание и настройка представлений в CellForrowat является тяжелой, а блокирует основную плату. /> < /li> Отсутствие повторного использования представлений для просмотров кодовых блоков внутри ячеек. Чего я хочу достичь: < /strong> < /p> < /li> Плавное прокрутка, даже когда несколько кодовых блоков появляются внутри ячеек. дорогостоящее представление о создании на каждом прокрутке. < /p> < /li> < /ul> Может ли кто -нибудь предложить лучшие практики или решения для эффективной обработки динамических подзоров, таких как пользовательские просмотры кодовых блоков внутри таблицы ячейки? ячейка. [/list]