作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我将 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
粗体字符串。
最佳答案
似乎有效。此快速测试的颜色已更改为 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/
我是一名优秀的程序员,十分优秀!