2017-10-03 3 views
1

In meiner App möchte ich einen Text in einem UILabel anzeigen. Ich verwende HTML, um den Text in meiner Datenbank dynamisch von meinem Text in meiner App zu speichern. Ich benutze diesen (Swift 3.2, iOS 8+):Unterstützt NSHTMLTextDocumentType HTML-Tabelle?

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 

} 

Es ist große Arbeit für die HTML-Sachen, die ich wie

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

Nun, ich möchte in meinem Label eine Tabelle angezeigt werden soll. Dies ist der HTML-Code für die Tabelle:

<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> 

Dieser Code zeigt eine Tabellenform an, aber es gibt keinen Rahmen in der Tabelle. Ich möchte den Tabellenrand wie den HTML-Renderer der Rolle anzeigen. Es ist möglich oder nicht?

Antwort

1

Seltsames Problem, ich habe nicht verstanden, warum diese einfache Sache nicht funktionierte, aber ich schaffte es, die Grenze durch Hinzufügen eines zufälligen Attributs zu den NSAttributedString, die mich glauben, dass es ein NSAtributedString Rendering-Fehler.

Hier ist die Funktion, die ich verwenden (dies ist Swift 4 kann aber zu früheren Versionen umgewandelt werden):

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

Danke für die temporäre Lösung. In meinem Fall arbeiten. –

Verwandte Themen