2017-10-03 10 views
1

私のアプリでは、私はUILabelにテキストを表示したいと思います。私はHTMLを使って自分のデータベース内のテキストを自分のアプリケーションのテキストから動的に保存します。私は実際にこの(スウィフト3.2、iOS版を8+)を使用します。NSHTMLTextDocumentTypeはHTMLテーブルをサポートしていますか?

if let data = text.data(using: .utf8) { 
    let htmlString = try? NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil) 

    self.textLabel.attributedText = htmlString 

} 

それは私が

<b>Text</b> 
<i>Test</i> 
And more... 

さて、私は私のラベルでテーブルを表示するように使用されるHTMLのもののための素晴らしい作品です。

<table border="2px solid black"> 
<tr><th>Symbole</th><th>Å</th><th>↓</th><th>■</th><th>╩</th><th>¬</th><th>▓</th><th>Ø</th><th>±</th><th> º </th><th>¶</th><th>░</th></tr> 
<tr><td>Utilisation</td><td>1</td><td>11</td><td>11</td><td>5</td><td>1</td><td>4</td><td>12</td><td>4</td><td>1</td><td>5</td><td>1</td></tr> 
</table> 

このコードは表形式を表示しますが、表には枠線がありません。私は、リールのHTMLレンダリングのようにテーブルの境界線を表示したい。それは可能かどうか?

答えて

1

この単純なことがうまくいかなかった理由は分かりませんでしたが、NSAttributedStringにランダムな属性を追加することで境界線を表示することができました。NSAttributedStringレンダリングのバグだと思います。

は、ここに私が使用する機能です(これは4スウィフトですが、以前のバージョンに変換することができます):一時的な修正のための

extension String { 
    func attributedString() -> NSAttributedString? { 
     guard let data = self.data(using: String.Encoding.utf8, 
      allowLossyConversion: false) else { return nil } 
     let options: [NSAttributedString.DocumentReadingOptionKey : Any] = [ 
      NSAttributedString.DocumentReadingOptionKey.characterEncoding : String.Encoding.utf8.rawValue, 
      NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html 
     ] 
     let htmlString = try? NSMutableAttributedString(data: data, options: options, documentAttributes: nil) 

     // Removing this line makes the bug reappear 
     htmlString?.addAttribute(NSAttributedStringKey.backgroundColor, value: UIColor.clear, range: NSMakeRange(0, 1)) 

     return htmlString 
    } 
} 
+0

感謝。私の場合に働く。 –

関連する問題