Я анализирую строку html в ячейке таблицы.Разбор этой строки вызывает у меня блокировку основного потока и проблемы с производительностью при прокрутке.
Я попытался выполнить разбор строки html в другой глобальной очереди и отобразить ее в приложении в главной очереди, как показано ниже:
let queue = DispatchQueue(label: "Test", qos: .userInteractive)
queue.async {
let fontModifiedString = NSString(format:"<span style=\"font-family: Helvetica; font-size: 16 \">%@</span>" as NSString, htmlStr)
let stringWithoutNewLine = fontModifiedString.replacingOccurrences(of: "\n", with: "<br>")
do {
let htmlAttrStr = try NSAttributedString(
data: stringWithoutNewLine.data(using: String.Encoding(rawValue: String.Encoding.unicode.rawValue), allowLossyConversion: true)!,
options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html, NSAttributedString.DocumentReadingOptionKey.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
print("html string \(htmlStr)")
let fontAttribute = [.foregroundColor: htmlStringColor] as [NSAttributedStringKey : Any]
let mutableAttributedString = NSMutableAttributedString(attributedString: htmlAttrStr)
mutableAttributedString.addAttributes(fontAttribute, range: NSRange(location: 0, length: htmlAttrStr.length))
DispatchQueue.main.async {
self.attributedText = mutableAttributedString
}
} catch {
print(error)
}
}
Однако я не могу увидеть строку HTML.Он отображает мне нормальный текст.Это повысило производительность, но не отображает html-строку в приложении?
Как отображать html-строку в ячейках таблицы без снижения производительности?