现在的位置: 首页 > 综合 > 正文

解决在UIWebView中加载图片时出现延迟现象的做法

2013年11月10日 ⁄ 综合 ⁄ 共 1432字 ⁄ 字号 评论关闭

 

最近在用UIWebView控件来显示从某个网站上的图片跟文字,做得还算是顺利,不过有个小问题就是,页面已经通信完毕,并且文字已经显示出来了,但是要表示的图片却要过个3秒左右才出来,实在是恼火。本来以为是图片的url没解析出来,用NSLog来打印出来的时候没发现有什么错的,真是奇怪。

先来上段代码先(代码中的图片地址是假的,请各位试的时候自己替换一下

NSString* showHtml = @"<html><head></head><body><img src='www.abc.com/img/img1.jpg'/><p>here is show a picture.</p></body></html>"; UIWebView* webView = [UIWebView alloc]; [webView loadHTMLString:showHtml baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; //以下把该UIWebView显示出来的代码略

这时候你会发现,在view中文出来一段时间后图片才会显示,效果就跟弹出来一样,当然这不是我想要的效果,我想让图片跟文字同时都显示出来。
那么有没有办法来解决这个问题呢,你可能会说先把图片给下载到本地再从本地加载,这是手机开发好吧,不要弄那么费资源的事情。其实我在这个地方也被卡住了一段时间,不过就在刚刚不久前通过google无意中发现了一个办法(查询的关键字已经忘记了,原谅我吧),很好的解决了这个问题,那就是把该图片通过base64的方法变成文字再在web上显示出来,废话不多说各位直接看代码吧

NSString* showHtml = @"<html><head></head><body><img src='data:image/jpg;base64,%@'/><p>here is show a picture.</p></body></html>"; NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"www.abc.com/img/img1.jpg"]]; NSString* imageString = [imageData base64Encoding];  UIWebView* webView = [UIWebView alloc]; [webView loadHTMLString:[NSString stringWithFormat:showHtml, imageString] baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; //以下把该UIWebView显示出来的代码略

粗体的地方就是通过base64来实现的地方,我们这里显示的是jpg格式的图片,因此在img标签的src属性里面写的是“src=’data:image/jpg;base64,%@’”,而如果是其他格式的图片的话记得把对应的地方给改一下。(不过我实验的结果是,即使你用image/png来表示jpg的图片的话一样能表示的说,至于有不良情况的话我也就不知道了)
通过这样处理,解决了在UIWebView中能同时显示图片跟文字,而不会出现图片加载延时的情况了,活活。(别看写出来就那么一段代码,这可是花费了我很长的时间才给解决掉的问题的,ft)

抱歉!评论已关闭.