【问题标题】:UIWebView has a delay when the load image from url从 url 加载图像时 UIWebView 有延迟
【发布时间】:2012-06-10 16:31:48
【问题描述】:

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

【问题讨论】:

    标签: iphone ios image uiwebview


    【解决方案1】:

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

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

    对于动画来说是这样的:

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

    【讨论】:

    • 您描述的解决方案在理论上是好的,但如果可能的话,我想只保留 UIWebView。
    • 然后你必须使用 javascript 来控制你的 webview 中出现的内容和时间。
    • Martin H,你能写更多关于如何用javascript做到这一点吗??
    • 我不是 JavaScript 方面的专家,您最好在问题中使用 Javascript/html 标签提出一个特定的新问题(它与 iOS 无关)。如果网页不属于您,因此您无法将 JS 添加到页面本身,则可以使用 stringByEvaluatingJavaScriptFromString 通过 UIWebView 将其注入页面的 dom。 IMO 如果您不了解 Javascript,这将比仅使用另一个 UIView 多 10 倍。为什么不想使用另一个 UIView?你可以在 5 分钟内让它工作。
    【解决方案2】:

    Martin H 的帮助下,我设法解决了这个问题。

    首先在我的 local.html 文件中,我被添加到 &lt;head&gt; 部分:

    <script type="text/javascript">
        function loadImage(imageSource) {
             document.getElementById("picture").src=imageSource;
        }
    </script>
    

    &lt;body&gt; 部分中的下一个:

    <img src="" style="border: none;" id="picture">
    

    接下来在我的 UIViewController 中添加委托方法:

    - (void) webViewDidFinishLoad:(UIWebView *)web {
        [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"loadImage('http://example.com/image.jpg')"]];
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-24
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 2013-10-27
      相关资源
      最近更新 更多