UIWebView - 删除加载指示器,BEFORE图像完成下载,但AFTER webView呈现

时间:2014-02-08 22:22:22

标签: ios objective-c ios7 uiwebview delegates

我知道可以使用通常的UIView委托方法UIWebViewwebViewDidStartLoad:

来实现加载webViewDidFinishLoad:

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

我没有找到任何资源,但我确信它已经完成,因为它是一个非常重要的优化。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

this questions的帮助下,您可以使用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文件尚未下载,但页面的其余部分将是。一个缺点是图像的空间可能会被阻挡,也可能不会被阻挡,因此一旦图像出现,文本内容可能会跳到页面上。