如何根据以前的HTML元素Swift更改NSMutableFontAttributes

时间:2017-08-07 09:13:36

标签: html ios swift3 nsattributedstring uifont

我正在开发一个RSS应用程序,我正在尝试将我从RSS库中获取的所有HTML转换为具有每个相应HTML元素的指定属性的NSMutableAttributedString,因此我可以在UITextView中显示它。

例如:

<p>Lorem Ipsum</p> *has the font* UIFont.systemFont(ofSize: 17.0)

<h1>Lorem Ipsum </p> *has the font* UIFont.boldSystemFont(ofSize: 20.0)

目前我正在将我的HTML转换为带有扩展名

的属性字符串
extension String {
    var htmlAttributedString: NSMutableAttributedString? {
        do {
            let attrStr = try NSMutableAttributedString(
                data: (self.data(using: String.Encoding.unicode, allowLossyConversion: true)!),
                options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
                documentAttributes: nil)
            return attrStr
        } catch let error {
            print(error)
        }
        return nil
    }
}

然后我可以通过以下方式枚举属性:

htmlText.enumerateAttributes(in: fullRange, options: [], using: {
    attrs, range, _ in
    for (attribute, object) in attrs {
        if attribute == NSFontAttributeName {
            htmlText.removeAttribute(attribute, range: range)
            htmlText.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 18.0), range: range)
        }
    }
})

这让我能够创建一个可以填充UITextView的字符串以及更新该字符串属性的能力,但是我无法弄清楚如何实际区分不同的HTML元素以便我可以给每个人相应的属性。

0 个答案:

没有答案