UIWebView - 在图片下载完成前,但在webView渲染完成后删除加载指示器。

4

我知道可以通过通常的UIWebView委托方法webViewDidStartLoad:webViewDidFinishLoad:来实现带有加载视图的加载。

然而,这种方法意味着您必须等待所有图片和.gif完全下载后才能删除加载视图。由于UIWebView默认异步(延迟)加载页面上的图片,因此我想在页面呈现时删除加载视图,但不一定要等到所有图片都下载完毕。

我没有找到任何相关资源,但我确信已经完成了这项工作,因为这是一个非常重要的优化。有什么想法吗?

1个回答

1

通过这个问题的帮助,您可以使用JavaScript在DOM完成加载时立即更改UIWebView的窗口位置,如下所示(使用jQuery):

$(document).ready(function(){
    location.href = http://removeLoadingScreen
})

然后使用UIWebView代理方法获取该链接并移除加载屏幕:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = request.URL;

    if([[url absoluteString] isEqualToString:@"http://removeLoadingScreen"]){
        // remove loading screen
    }
}

图片和 .gif 文件还未下载完成,但页面的其余部分已经可以访问。唯一的缺点是图片所占用的空间可能还没有被占据,因此一旦图片出现,文本内容可能会跳到页面下方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接