Это мой пример строки HTML.
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"Content-Style-Type\" content=\"text/css\"><title></title><meta name=\"Generator\" content=\"Cocoa HTML Writer\"><style type=\"text/css\">p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 40.0px; font: 33.2px '.SF UI Text'; color: #000000; -webkit-text-stroke: #000000}span.s1 {font-family: '.SFUIText'; font-weight: normal; font-style: normal; font-size: 33.19pt; font-kerning: none}</style></head><body><p class=\"p1\"><span class=\"s1\">123</span></p></body></html>"
Вот две функции для преобразования из HTML в строку атрибута в HTML для работы с размером сервера.
Атрибут строки в HTML:
func attributeToHTML(_ attr: NSAttributedString) -> String {
var resultHtmlText = ""
do {
let r = NSRange(location: 0, length: (attr.length))
let att = [NSAttributedString.DocumentAttributeKey.documentType: NSAttributedString.DocumentType.html]
let d = try attr.data(from: r, documentAttributes: att)
if let h = String(data: d, encoding: .utf8) {
resultHtmlText = h
}
}
catch {
print("utterly failed to convert to html!!! \n>\(String(describing: attr))<\n")
}
return resultHtmlText
}
HTML для атрибутированной строки:
func htmlToAttribute(_ string: String) -> NSAttributedString {
let htmlString = string
var result = NSAttributedString()
do {
let options = [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html]
let str = try NSAttributedString(data: htmlString.data(using: String.Encoding.unicode, allowLossyConversion: true)!, options: options, documentAttributes: nil)
result = attributedString
} catch {
print(error)
}
return result
}
Когда я конвертирую строку HTML в строку с атрибутами, она увеличивает размер шрифта и отлично работает с преобразованием строки с атрибутами в HTML.
Перечисляя объекты, я также могу изменить размер шрифта, но его динамическое содержимое любого типа строки HTML будет получено в ответ. Так что это не решения.
Пожалуйста, предложите способ работы с HTML-контентом в UITextview для редактирования и хранения на сервере.