我試圖將來自我的後端的HTML字符串轉換爲NSAttributedString
,用於我的textView
,,但我想要自己設置字體。Swift:使用自定義字體從HTML創建字符串
這裏是一個HTML字符串從我的服務器來的例子:
<p><strong>Title</strong></p> <p><strong>Extra info ..</strong></p><p>- Some more info</p> <p>- Contact</p>
一些計算器主題建議設置在服務器後端的字體,但是這是不可能在我的處境。
我在網上搜索關於如何創建NSAtrributedString
:使用WebView
或NSAttributedString
,我去與第二齣於某些原因。我用下面的方法來我的HTML字符串轉換爲NSAttributedString:
func setHTMLFromString() -> NSAttributedString{
let attrStr = try! NSMutableAttributedString(
data: self.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
return attrStr
}
此方法,但它會覆蓋我已經爲我的TextView默認的系統字體。所以我嘗試添加的字體作爲一個屬性:
func setHTMLFromString() -> NSAttributedString{
let attrStr = try! NSMutableAttributedString(
data: self.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
if #available(iOS 8.2, *) {
attrStr.addAttributes([NSFontAttributeName : UIFont.systemFontOfSize(16.0, weight: UIFontWeightThin),
NSForegroundColorAttributeName: UIColor(rgb: 0x555555)], range: NSMakeRange(0, attrStr.length))
} else {
attrStr.addAttributes([NSFontAttributeName : UIFont.systemFontOfSize(16.0),
NSForegroundColorAttributeName: UIColor(rgb: 0x555555)], range: NSMakeRange(0, attrStr.length))
}
return attrStr
}
現在的字體我想顯示不正確顯示,但是所有的HTML標籤停止工作。任何人都有如何設置字體和保持HTML標籤工作的解決方案?
在獲得的HTML中嵌入CSS應該是可能的,但是這會感覺「髒」。我真的不知道是否沒有像Android這樣的更好/更簡單的方法,其中有一個原生的HTML類來完成所有的工作。我會稍微等待這個話題,如果沒有其他答案給出,我會接受這個答案,因爲它確實有效。 – Hapeki
@Hapeki完全同意它感覺「髒」。如果你想出一個更好的方法,我會很感興趣。 –