【问题标题】:How do Iazy-load and pre-render a ViewController with a UIWebView upon app launch?如何在应用启动时使用 UIWebView 加载和预渲染 ViewController?
【发布时间】:2011-05-20 08:42:35
【问题描述】:

我正在开发一个具有一系列分层 UITableViewControllers 的应用程序,直到您最终被带到一个包含您正在寻找的信息的 UIWebView。它工作正常,只是当 UIWebView 加载时需要一段时间来呈现并在加载前闪烁白色(我所有的视图,包括 UITableViewControllers 和 HTML 文件,都有黑色背景)

一旦 UIWebView 被加载并显示出来,问题就不大了——我让它在加载内容时加载一个黑色背景的空 HTML 页面——但第一次它总是很慢,并且给了我白色闪光。

我尝试通过初始化 UIWebView 并在之前的 UITableViewController 仍处于活动状态时加载它来预渲染它,但它似乎不起作用。它让我可以定义所有必要的参数,但调用 loadView 方法,也没有我尝试过的任何其他方法,都会诱使它在将 UIWebView 推送到屏幕上之前实际加载黑色背景 HTML。

理想情况下,我想做的只是在应用启动后在后台初始化 UIWebView,这样当它被推送到导航堆栈供用户查看时,它已经预加载了黑色背景所以没有白色闪光。

【问题讨论】:

    标签: ios uiwebview


    【解决方案1】:

    webview.backgroundColor = [UIColor blackColor];怎么样?

    【讨论】:

    • 第一次仍然闪烁白色,不过似乎时间较短。
    【解决方案2】:

    您是否找到并回答了这个问题。我也在做同样的事情。我发现我可以创建第二个 webview 并开始在屏幕外填充它。我使用 javascript 检查进度,以便我知道它已经呈现。然而,在我渲染了两个页面(一个可见,一个不可见)后大约 3 秒,它会导致网页崩溃。

    我的下一个想法是让两个屏幕都显示在右侧一英里以外的大部分未使用的屏幕上,这样最终用户就看不到它。

    【讨论】:

    • 我最终做的只是有一个名为“maskingView”的大不透明黑色视图,它覆盖了webView,直到它收到来自webView的didFinishedLoading委托回调,此时它隐藏了maskingView。终于成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2012-03-30
    • 2021-02-08
    相关资源
    最近更新 更多