0

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->显示文本->加载时显示图像

4

2 回答 2

0

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

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

对于这样的动画:

   [UIView animateWithDuration:0.4
                 animations:^ {
                     self.webView.alpha = 1.0;                         
                 }];
于 2012-06-10T17:38:18.807 回答
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')"]];
}
于 2012-06-13T07:14:41.067 回答