Я использую расширение ниже, чтобы преобразовать строку HTML в атрибутивную строку, чтобы отобразить атрибутивную строку, которую я использую UILabel
. Семейство шрифтов системно-регулярное с точками 15/18 для iPhone / iPad соответственно. В приведенных выше Imgs, Описание - это заголовок, а приписанная строка - это значение.
extension NSAttributedString {
internal convenience init?(html: String, font : UIFont) {
let modifiedFont = String(format:"<span style=\"font-family: '-apple-system', '\(font.fontName)'; font-size: \(font.pointSize)\">%@</span>", html)
guard let data = modifiedFont.data(using: String.Encoding.utf16, allowLossyConversion: false) else {
return nil
}
guard let attributedString = try? NSMutableAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) else {
return nil
}
self.init(attributedString: attributedString)
}
}
консольная печать переменных в указанном выше расширении
(lldb) po html
"<p><font size=\"2\">Pack Size: 2.5 Gal x 2</font></p><p><font size=\"2\">Gallons per case / bucket / barrel:</font></p><p><font size=\"2\">1 Case – 5.0 Gal<br> 2 Cases – 10.0 Gal<br> 3 Cases – 15.0 Gal</font></p>"
(lldb) po font
<UICTFont: 0x7ffbe4b03a20> font-family: ".SFUI-Regular"; font-weight: normal; font-style: normal; font-size: 15.00pt
(lldb) po modifiedFont
"<span style=\"font-family: \'-apple-system\', \'.SFUI-Regular\'; font-size: 15.0\"><p><font size=\"2\">Pack Size: 2.5 Gal x 2</font></p><p><font size=\"2\">Gallons per case / bucket / barrel:</font></p><p><font size=\"2\">1 Case – 5.0 Gal<br> 2 Cases – 10.0 Gal<br> 3 Cases – 15.0 Gal</font></p></span>"
Я вызываю добавочный номер, как показано ниже
self.lblValueDescription.attributedText = NSAttributedString(html: data.descriptionField,
font: self.lblValueDescription.font)
Вывод в iOS 12

Выход в iOS 13

Проблема:
- Размер шрифта не совпадает с ожидаемым в iOS12
- В iOS13 есть несколько инопланетных символов с одинаковой строкой html.