来自网址的加载图片时,我遇到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;在加载时显示图像
答案 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')"]];
}