iOS 11在将HTML转换为NSAttributedString

时间:2017-10-27 16:41:44

标签: html ios string fonts xcode9-beta

我有一个字符串扩展名,可以将HTML转换为NSAttributedString,但是我会在格式化之前将自己的自定义字体添加到API中,然后按以下方式进行格式化。

    let testString = "<span style="font-family: MuseoSans-900"> This is an html String <i> with italics </i> and a custom font </span>"

    guard let htmlData = testString.data(using: .utf8) else { return nil }

            do {

                let attrString = try NSAttributedString(data: htmlData, options: [
                    NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                    NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue,
                    ], documentAttributes: nil)

                let formattedHTMLString = NSMutableAttributedString(attributedString: HTMLString)
                formattedHTMLString.beginEditing()
                formattedHTMLString.enumerateAttribute(NSFontAttributeName, in: NSMakeRange(0, formattedHTMLString.length), options: []){
                    (_ value: Any?, _ range: NSRange, _ stop: UnsafeMutablePointer) -> Void in
                    if value != nil {
                        var oldFont = value as? UIFont
                        print("\(oldFont?.fontName)")
                    }
                }
                return formattedHTMLString
            } catch let error as NSError {
                print(error.localizedDescription)
                return nil
            }

在iOS 10上&lt;返回属性字符串,整个字符串具有相同的字体(在本例中为MuseoSans-900),包括html字符串的italized部分,但在iOS 11上它更新并将字体更改为MuseoSans-300,用于html的斜体部分字符串并在转换为NSAttributed字符串期间保留字符串MuseoSans-900的其余部分。我不知道为什么会发生这种情况,我们将非常感谢任何帮助。

0 个答案:

没有答案