我正在解析来自Google Direction API的JSON响应,它正在使用html_instructions。我想在UILabel上显示它。但是没有得到任何完美的解决方案来计算UILabel所需的高度。
html_instructions如下:
Merge onto <b>Shankar Sheth Rd</b><div style=\"font-size:0.9em\">Pass by the gas station (on the left)</div>
我已经尝试过在stackoverflow上提到的解决方案,例如使用sizeThatFits()
和boundingRectWithSize()
,它为html_instructions提供了正确的高度,但没有<div>
标记,但是当html_instructions拥有时,它会留出额外的空间<div>
代码。
请告诉我如何获取UILabel的确切所需高度,其中包含h <div>
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
您可以使用UIWebView使用以下方法
加载html字符串- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
喜欢
[webView loadHTMLString:htmlString baseURL:nil];
加载htmlString后
- (void)webViewDidFinishLoad:(UIWebView *)webView;
将调用上面的委托方法。在这里,您可以获得webView的内容大小。你可以完美地设置UIWebView的高度
答案 2 :(得分:0)
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分配给您的标签