gpt4 book ai didi

html - 如何在 swift 中从 html 字符串转换 NSAttributedString?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:25 33 4
gpt4 key购买 nike

当我将 html 字符串转换为 NSAttributedString 时,它正常工作,但在特定情况下我遇到了问题。

func htmlAttributed(family: String?, size: CGFloat, color: UIColor) -> NSAttributedString? {
do {
let htmlCSSString = "<style>" +
"html *" +
"{" +
"font-size: \(size)px;" +
"color: \(color.hex);" +
"font-family: \(family ?? "Helvetica"), Helvetica;" +
"}</style> \(self)"

guard let data = htmlCSSString.data(using: String.Encoding.utf8) else {
return nil
}

return try NSAttributedString(data: data,
options: [.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
} catch {
return nil
}
}

这是我的测试用例 html 字符串,它有问题。 <b>Hi <i>how are <u>you?</u></i></b>

这是我使用 NSAttributedString 的结果。 你好吗?

我想在这句话中全部加粗,但我只得到 Hi粗体字符串。

最佳答案

Test case html

似乎有效。此快速测试的颜色已更改为 String 类型。您的函数包含在 String 扩展中。以下是对该函数的调用。返回的属性字符串已转换为 MS Word 格式的数据,生成上述最后一句话,并在 Word 中显示。

var s = "<b>Hi <i>how are <u>you?</u></i></b>"
var attr = s.htmlAttributed(family: nil, size: 20, color: "blue")

var MWdata = attr!.docFormat(from: NSRange(location: 0, length: attr!.length),documentAttributes: [NSAttributedString.DocumentAttributeKey(rawValue: "documentType"):NSAttributedString.DocumentType.docFormat])

关于html - 如何在 swift 中从 html 字符串转换 NSAttributedString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311593/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com