来自url的负载图像时,UIWebView有延迟

时间:2012-06-10 16:31:49

标签: iphone ios image uiwebview

来自网址的加载图片时,我遇到UIWebView延迟问题。

在我的代码中是加载本地html文件的行:

NSBundle *thisBundle = [NSBundle mainBundle];
NSString *path = [thisBundle pathForResource:@"detail" ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:path];
NSString *htmlString = [NSString stringWithFormat:html, imageURL];
[webView loadHTMLString:htmlString baseURL:nil];

和我的detail.html文件中的一行:

<img src="%@" height="100%" alt="…"></img>

现在,当我按下按钮并转到UIWebView时,首先它是白色的,几秒后显示图像和文本。 我知道从URL加载图像需要时间,但是有可能在第一次显示文本和下一次等待加载图像吗?

一般来说我想的是:按钮 - &gt;转到UIWebView - &gt;显示文字 - &gt;在加载时显示图像

2 个答案:

答案 0 :(得分:0)

您可以做一些事情,一个是在uiwebview下面显示一个显示文本的视图。 将uiwebview的alpha设置为0(因此它的透明度),然后当您收到uiwebview已完成加载的通知时,使用动画将其淡入,然后使用文本删除视图。

当调用webViewDidFinishLoad:时,您将知道UIWebView何时完成加载。

对于这样的动画:

   [UIView animateWithDuration:0.4
                 animations:^ {
                     self.webView.alpha = 1.0;                         
                 }];

答案 1 :(得分:0)

Martin H 的帮助下,我设法解决了这个问题。

首先在我的local.html文件中,我添加了<head>部分:

<script type="text/javascript">
    function loadImage(imageSource) {
         document.getElementById("picture").src=imageSource;
    }
</script>

下一个<body>部分:

<img src="" style="border: none;" id="picture">

然后在我的UIViewController中我添加了委托方法:

- (void) webViewDidFinishLoad:(UIWebView *)web {
    [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"loadImage('http://example.com/image.jpg')"]];
}