2017-06-12 46 views
0

我有一些HTML內容,我想要在我的本地UILabel呈現,但除此之外,我必須添加自定義字體到該UILabel。我使用NSAttributedString來做到這一點,並使用下面的代碼來在我的UILabel中呈現HTML內容。將字體屬性添加到HTML呈現UILabel swift

func htmlAttributedString() -> NSAttributedString? { 
    guard let data = self.data(using: .utf16, allowLossyConversion: false) else { 
     return nil 
    } 
    guard let html = try? NSMutableAttributedString(
     data: data, 
     options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], 
     documentAttributes: nil) else { return nil } 


    let attributes = [ 
     NSForegroundColorAttributeName: UIColor.lightGray, 
     NSFontAttributeName : UIFont.systemFont(ofSize: 12) 
    ] 
    html.setAttributes(attributes, range: NSRange(0..<html.length)) 

    return html 
} 

var str = "Here is the <bold>string</bold> that i want to be bold. 
messageLabel.attributedText = str.htmlAttributedString() 

這裏的問題是,當我在HTML呈現的屬性字符串上應用字體屬性。然後,像大膽的HTML格式都丟失了。

所以是沒有辦法,我可以申請在HTML中,某些所選字體的方式呈現的屬性串

+0

https://stackoverflow.com/a/44435915/5362916檢查這一個 –

+0

使用此鏈接:https://stackoverflow.com/questions/28496093/making-text-bold-using-attributed-string -in-swift – ashwini

+0

@UmaMadhavi你的鏈接爲我工作。謝謝 – Madu

回答

0

根據您的要求更換字體。

func htmlAttriButedText(str : String) -> NSAttributedString{ 
     let attrStr = try! NSMutableAttributedString(
      data: str.data(using: String.Encoding.utf8, allowLossyConversion: true)!, 
      options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], 
      documentAttributes: nil) 
     attrStr.addAttribute(NSForegroundColorAttributeName, value: lightTextColor, range: NSMakeRange(0, attrStr.length)) 
     attrStr.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 13), range: NSMakeRange(0, attrStr.length)) 
     return attrStr 
    } 
+0

對我來說,它代替原始HTML內容中的所有格式 – Madu

+0

因爲粗體/斜體和大小都在'UIFont'內部,所以它會失去其特殊性。迭代'NSFontAttributeName'並更改每個值,或編輯自己的HTML。 – Larme