2016-04-14 22 views
1

我正在解析來自Google Direction API的JSON響應,它具有html_instructions。我想在UILabel上顯示它。但沒有得到任何完美的解決方案來計算UILabel所需的高度。如何完美計算UILabel所需的高度,其中屬性字符串包含HTML標記

html_instructions如下:

我曾嘗試在計算器中提到喜歡使用sizeThatFits()boundingRectWithSize()解決方案,這是給我正確的高度html_instructions沒有<div>標籤,但它留下多餘的空間時, html_instructions有<div>標籤。

請任何告訴我怎麼去精確高度爲的UILabel包含歸因文字的HTML標籤就像<div>

+0

你可以使用一個UIWebView來顯示此數據 –

回答

1

我一直用這個UILabel擴展,並將它與HTML標籤也可以。沒有理由不應該工作

extension UILabel { 

    func sizeForString(string: NSString, constrainedToWidth width: Double) -> CGSize { 

     return string.boundingRectWithSize(
      CGSize(
       width: width, 
       height: DBL_MAX 
      ), 
      options: .UsesLineFragmentOrigin, 
      attributes: [ 
       NSFontAttributeName : self.font 
      ], 
      context: nil).size 
    } 
} 
+0

謝謝LucaD和@Tyson維涅什爲你的解決方案。第二個人爲我工作。 – Sandy

0

您可以使用一個UIWebView使用以下方法加載HTML字符串,

- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL; 

[webView loadHTMLString:htmlString baseURL:nil]; 

的htmlString加載

- (void)webViewDidFinishLoad:(UIWebView *)webView; 

the上面的委託方法將被調用。在這裏你可以得到webView的內容大小。與您可以設置一個UIWebView的高度完美

0

斯威夫特3

let rowhtmlString = "Merge onto <b>Shankar Sheth Rd</b><div style=\"font-size:0.9em\">Pass by the gas station (on the left)</div>" 

let htmlData = NSString(string: rowhtmlString).data(using: String.Encoding.unicode.rawValue) 

let attributedString = try! NSAttributedString(data: htmlData!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes:nil) 

那麼attributedString分配給你的標籤

相關問題