У меня есть контроллер представления, который имеет tableView, а tableView имеет много ячеек.Обновление атрибутаText UITextView в UITableViewCell является laggy
class TimelineCell: UITableViewCell {
@IBOutlet weak var photo: UIImageView!
@IBOutlet weak var message: UITextView!
}
class TimelineViewController: UIViewController, UITableViewDataSource {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let entity = tableViewData[indexPath.row]
let cell: TimelineCell = tableView.dequeueReusableCellWithIdentifier(CellIdentifier, forIndexPath: indexPath) as! TimelineCell
let messageAttributedString = entity.messageAttributedString
cell.message.attributedText = messageAttributedString
return cell
}
}
Если длина messageAttributedString слишком длинная и высота cell.message слишком длинная, Tableview является лагом при прокрутке. Если я удалю обновление атрибута codeText, прокрутка будет гладкой.
Любая идея для решения этой проблемы?
Я пробовал UILabel, и проблема все еще существовала.
Могу ли я обновить атрибутText в фоновом потоке? Думаю, я не могу.
Сначала я пытаюсь преобразовать UITextView в UIImage и показать изображение в ячейках. TableView уже не лагги, но я не думаю, что это хорошее решение.
В качестве быстрого теста попробуйте установить 'cell.contentView.layer.shouldRasterize = true'. http://stackoverflow.com/questions/19405741/when-should-i-set-layer-shouldrasterize-to-yes. Если вы видите дисплей менее резким, вы также можете изменить свой код, чтобы устанавливать его только для ячеек при прокрутке для повышения производительности, но когда прокрутка останавливается, найдите способ снова установить его на «false». –