本文介绍了如何在UITextview中呈现具有不同字体样式但具有相同字体系列的HTML字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的HTML字符串:

This is my HTML string:

<i>Italics </i><b>Bold </b><u>Underline</u><blockquote>block quote<br></blockquote>

我希望所有样式都相同(斜体,粗体等),但是我想将字体系列实现为Open Sans.因此,无论斜体是什么,我都希望字体为Open-Sans Italics.我该如何实施?请帮忙.

I want all the styling to be same (Italic, bold etc), but I want to implement the font family as Open Sans. So, wherever its italics I want the font to be Open-Sans Italics. How do I implement that? Please help.

推荐答案

尝试使用带有NSHTMLTextDocumentType选项和.utf8字符串编码的NSAttributedString

try using NSAttributedString with NSHTMLTextDocumentType option and .utf8 string encoding

快捷键3:

extension String {

    var htmlAttributedString: NSAttributedString? {

        do {
            return try NSAttributedString(data: data(using: .utf8)!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch let error {
            print(error.localizedDescription)
        }
        return nil
    }
}

使用

let htmlStringCode = "<i>Italics </i><b>Bold </b><u>Underline</u><blockquote>block quote<br></blockquote>"

if let htmlText = htmlStringCode.htmlAttributedString {
       let attributes = [NSFontAttributeName: UIFont(name: "Open Sans", size: 18.0)!]
        let attributedText = NSMutableAttributedString(string: htmlText.string, attributes: attributes)

        let htmlString = htmlText.string as NSString
        let range  = htmlString.range(of: "Italics")
        attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "OpenSans-Italic", size: 18.0)!, range: range)

        textView.attributedText = attributedText
}

这篇关于如何在UITextview中呈现具有不同字体样式但具有相同字体系列的HTML字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 09:03