2017-10-03 6 views
1

내 응용 프로그램에서 UILabel에 텍스트를 표시하고 싶습니다. HTML을 사용하여 데이터베이스의 텍스트를 내 응용 프로그램의 텍스트에서 동적으로 저장합니다. 실제로이 (스위프트 3.2, 아이폰 OS를 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 물건에 대한 훌륭한 일입니다. 다음 표의 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

감사합니다. 내 경우에 일해. –