Невозможно установить текст для системного шрифта в NSAttributedString со стилем CSS - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть следующее расширение для преобразования ответа API в формате html в NSAttributedString, стилизованного с CSS:

extension String {
public func convertHtmlToAttributedStringWithCSS(bodyFont: UIFont, h1Font: UIFont, csscolor: String, lineheight: Int, csstextalign: String) -> NSAttributedString? {
        let modifiedString =
        "<style>" +
            "body{" +
                "font-family: '\(bodyFont.fontName)'; " +
                "font-size:\(bodyFont.pointSize)px; " +
                "color: \(csscolor); " +
                "line-height: \(lineheight)px; " +
                "text-align: \(csstextalign); " +
            "} " +
            "h1{" +
                "font-family: '\(h1Font.fontName)'; " +
                "font-size:\(h1Font.pointSize)px; " +
            "}" +
        "</style>\(self)";
        guard let data = modifiedString.data(using: .utf8) else {
            return nil
        }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        }
        catch {
            print(error)
            return nil
        }
    }
}

Я называю это так:

self.CampaignDescriptionBody.attributedText = briefing!.convertHtmlToAttributedStringWithCSS(bodyFont: UIFont.systemFont(ofSize: 12), h1Font: UIFont.systemFont(ofSize: 15), csscolor: "grey", lineheight: 5, csstextalign: "left")

Размер шрифта, выравнивание текста и т. Д. c работает нормально. Моя проблема в том, что шрифт на экране совсем не похож на системный шрифт, который сейчас кажется Сан-Франциско.

Вот скриншот с 2 метками UILabels, которые расположены рядом друг с другом на экране. «Campaign Description» установлено в «System Bold 15» в Интерфейсном Разработчике «Exklusivität» - это часть ответа API, которая превращается в NSAttributedString, поэтому она должна отображаться с тем же шрифтом, но, очевидно, нет.

enter image description here

Кто-нибудь знает, что я здесь не так делаю?

1 Ответ

0 голосов
/ 24 февраля 2020

Чтобы получить шрифт Сан-Франциско через CSS, используйте font-family: '-apple-system'.

...