如何使用loadData将NSData(UIImageJPEGRepresentation的o / p)加载到wkwebview中?

时间:2015-10-12 20:53:57

标签: ios wkwebview loaddata

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

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

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

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

我无法使用上面的loadData调用渲染图像。可能是我传递给MIMEType,characterEncoding和baseUrl的params的问题。无法在任何地方找到此方法调用的任何示例。

注意:

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

2 个答案:

答案 0 :(得分:0)

这对我有用:

    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类型数据有关。

答案 1 :(得分:0)

这可能是一个较晚的答案,我们在一个项目中遇到了类似的问题,一种解决此问题的方法是通过将内容嵌入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)
}