【问题标题】:iOS rendering HTML tags with hyperlinks and imagesiOS 渲染带有超链接和图像的 HTML 标签
【发布时间】:2016-03-09 00:30:04
【问题描述】:

我正在尝试在包含图像和超链接的 HTML 标记中呈现一篇文章,但我无法让它们在 UITableViewCell 中理想地工作,我在 Google 上进行了搜索并尝试了两种现有的解决方案;

第一个是使用UIWebView 来显示我尝试过的HTML 标签,但它不会根据内容的大小调整自身大小,并且似乎具有固定大小。 (这意味着我不想要水平和垂直滚动,它应该具有与UILabel 相同的行为,除了它包含图像和超链接)。它没有原生行为并且占用大量内存。

我尝试的第二个方法是使用UITextView 使用NSAttributedStringsNSHTMLTextDocumentType 呈现HTML 标签,但HTML 中的所有链接都消失了,这让事情变得很困难。

例如HTML text

【问题讨论】:

  • 所有链接“消失”?那个怎么样?您是否有 html 文本不起作用的示例以及您的代码来呈现它?
  • 它们消失了,因为它们在被NSHTMLTextDocumentType 解析后没有出现。我添加了一个我之前使用的示例 HTML 文本文档。解析 HTML 的代码库来自stackoverflow.com/questions/25879837/…

标签: html ios swift nsattributedstring


【解决方案1】:

您可以使用 UIWebView 并根据内容的大小调整 webview 的高度。 1.设置webView委托 2.设置要测量的id为“container”的div内的html

override func viewDidLoad() {
    super.viewDidLoad()
    webView.delegate = self
    webView.loadHTMLString("<html><body><div id='container'>Put your content inside this div to ve measured</div></body></html>", baseURL: nil)
}

func webViewDidFinishLoad(webView: UIWebView) {
    var js = self.webView.stringByEvaluatingJavaScriptFromString("document.getElementById(\"container\").offsetHeight;")!
    if js == ""{ js = "0" }
    let height = CGFloat(js)
    // now resize your height with this value, modify the frame or the constrains according to your design
}

【讨论】:

    猜你喜欢
    • 2019-05-14
    • 2012-07-06
    • 2014-03-22
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多