【问题标题】:NSAttributedString loading html with imagesNSAttributedString 加载带有图像的 html
【发布时间】:2014-07-22 12:33:30
【问题描述】:

我正在尝试在 iOS 7 中使用 NSAttributedString 呈现 html 文档(作为 UIWebView 替代方案调查的一部分)。代码如下:

NSData *htmlData = [NSData dataWithContentsOfFile:self.chapterPath];

NSAttributedString *attrString = [[NSAttributedString alloc] initWithData:htmlData
                                                                  options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} 
                                                       documentAttributes:nil error:nil];

self.readerTextView.attributedText = attrString;
self.readerTextView.editable = NO;

并且没有显示图像。是否可以使用这种方法渲染带有图像的 HTML,还是我错过了一些选项或属性?谢谢。

更新:

部分未显示的标签:

<img src="images/cover.jpg" alt="cover" style="height: 100%"/>

【问题讨论】:

  • 你在哪里渲染 HTML?为什么 HTML 需要在属性字符串中,而普通字符串可以保存它?
  • 我尝试在 UITextView 中渲染。 iOS 7 引入了对 NSAttributed 字符串的 HTML 支持
  • 确定这只是 HTML 文本样式,而不是完整的 HTML 5 支持?
  • 所以你希望UITextViewimg 标签告诉它的任何地方获取图像数据并显示图像?我认为您需要进一步调查哪些 HTML 功能受支持,哪些不支持(正如我所说,我很确定它将仅限于文本样式)。
  • 但鉴于支持在 NSAttributedString 类中,因此可以合理地假设它只能支持可以在属性字符串中表达的 HTML 功能,并且不包括图像支持。你想要的是一个网络视图。

标签: html ios7 uitextview nsattributedstring


【解决方案1】:

可以使用NSAttributedString 渲染带有图像的 HTML。问题出在“src”属性中,我认为相对链接不起作用。通过file:// 或通过http/https 到Internet 资源的完整链接是可以接受的。

带有工作示例的文章:

http://initwithfunk.com/blog/2013/09/29/easy-markdown-rendering-with-nsattributedstring-on-ios-7/ https://github.com/ericallam/MarkyMark

【讨论】:

    【解决方案2】:

    在 iOS 14 上包含标签似乎可以,但在 Mac Catalyst 14 上不可以,NSAttributedString 调用失败。来自 NSAttributedString 的文档:“从主线程调用它是有效的(但如果 HTML 包含对外部资源的引用,仍然会超时,应该不惜一切代价避免这种情况)。HTML 导入机制旨在实现诸如降价(即文本样式、颜色等),不适用于一般的 HTML 导入。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多