私のバックエンドから来るHTML文字列をtextView
、のNSAttributedString
に変換しようとしていますが、自分でフォントを設定したいのですが、です。ここでSwift:カスタムフォントでHTMLから文字列を作成
私のサーバーからHTML-文字列の例です:いくつかのstackoverflowのトピックは、サーバ・バックエンドでのフォントを設定示唆
<p><strong>Title</strong></p> <p><strong>Extra info ..</strong></p><p>- Some more info</p> <p>- Contact</p>
、しかし、これは私の状況では不可能です。
私はNSAtrributedString
を作成する方法についてのオンライン検索:WebView
またはNSAttributedString
を使用し、私は特定の理由のための第二と一緒に行きました。私はNSAttributedStringに私のHTML-文字列を変換するには、次のメソッドを使用します。
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「汚い」と感じることは完全に同意します。あなたがより良い方法を思いつくなら、私は興味があります。 –