2012-06-10 42 views
0

加载图像我有问题,UIWebView延迟当从URL加载图像。UIWebView有一个延迟时,从URL

在我的代码是行加载本地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加载图像需要时间,但它可能在第一次显示文本和下一个等待加载图像?

一般来说,我的想法是:按钮 - >去UIWebView - >显示文本 - >时,它的加载

回答

0

随着马丁^ 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')"]]; 
} 
0

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

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

对于动画是这样的:

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

你描述的解决方案理论上是好的,但我想保持onl如果可能的话,UIWebView。 – murzynpl

+0

然后,你将不得不使用JavaScript来控制什么出现在你的web视图和什么时候。 – Gruntcakes

+0

**马丁H,**你可以写更多如何用JavaScript做到这一点? – murzynpl