【问题标题】:How to use loadData to load NSData (o/p of UIImageJPEGRepresentation) into wkwebview?如何使用 loadData 将 NSData(UIImageJPEGRepresentation 的 o/p)加载到 wkwebview 中?
【发布时间】:2016-01-10 10:59:36
【问题描述】:

作为 iOS9 的一部分,我们在 WKWebView 中引入了新方法 loadData()。

我有 NSData 对象,它是我想在 WKWebView 中呈现的 UIImageJPEGRepresentation 的输出。在iOS9之前,为了在wkwebview中渲染图片,我是:

  • 将 nsdata 作为 .jpeg 文件存储在本地文件系统中
  • 使用 fileWithUrl 初始化方法创建一个 nsurl
  • 调用 wkwebview.loadRequest(url) 其中 url 是上一步创建的 nsurl

我希望利用新的 iOS9 方法,我可以直接调用 wkwebview.loadData(nsdata, MIMEType:"image", characterEncoding:"ASCII", baseURL: NSURL("random"))

我无法使用上述 loadData 调用来渲染图像。我为 MIMEType、characterEncoding 和 baseUrl 传递的参数可能有问题。在任何地方都找不到此方法调用的任何示例。

注意事项:

  • 我不确定渲染图像时使用什么字符编码
  • baseUrl 不能为 nil,因此将其初始化为随机 url

【问题讨论】:

    标签: ios wkwebview loaddata


    【解决方案1】:

    这可能是一个较晚的答案,我们在一个项目中遇到了类似的问题,解决此问题的一种方法是通过将内容嵌入到 html 中来使用 html 的强大功能。

    func loadDataContent(data:Data,mimeType:String) {
        let urlStr = "<iframe width=\"100%\" height=\"100%\" src=\"data:\(mimeType);base64,\(data.base64EncodedString())\"></iframe>"
        webBrowser?.loadHTMLString(urlStr, baseURL: nil)
    }
    

    【讨论】:

      【解决方案2】:

      这对我有用:

          if let path = NSBundle.mainBundle().pathForResource("Test", ofType: "jpg") {
              if let data = NSData(contentsOfFile: path) {
                  webView.loadData(data, MIMEType: "image/jpeg",
                      characterEncodingName: "", baseURL: NSURL(string: "")!)
              }
          }
      

      characterEncodingNamebaseURL 看起来有点奇怪,但我怀疑它们与加载 image/jpeg 类型数据有关。

      【讨论】:

      • 抱歉延迟回复。这对我不起作用。 webview 加载错误并显示我的代码中的错误处理消息
      • 错误是什么?我在发布之前尝试了此代码。
      • 尝试在 characterEncodingName 中添加@"UTF-8",我想我在某处读到将 baseUrl 留空是不好的,所以在 baseUrl 参数中添加 [[NSBundle mainBundle] resourceURL],这个 baseUrl 参数没有任何作用,根据我之前读过的内容,将其留空是个坏主意
      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 2015-08-17
      • 2013-02-20
      • 2014-04-24
      • 1970-01-01
      • 2012-03-17
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多