加载UIWebview时屏幕冻结

时间:2016-06-22 11:02:17

标签: ios objective-c uiwebview ios9.3

我正在UIWebView中加载HTML字符串,文本内容会在一秒钟内加载,但HTML字符串中有很多图片,导致此图片UIWebView被冻结,之后加载我的屏幕可以免费使用的所有图像。

对此有何建议?

3 个答案:

答案 0 :(得分:1)

在调度线程中加载webview,试试这个:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.webView loadHTMLString:@"htmlstring" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
});

答案 1 :(得分:0)

我认为它已经冻结了,因为您正在主线程中从网络加载图片,这也是重新绘制用户界面的责任。通过在线程中加载大图像,您的UI也会冻结。

我建议将执行图像加载的代码移动到单独的线程中。 (你可以使用@Andey的回答)

答案 2 :(得分:0)

就像@Andey所说,只要你正在做的事情需要一些时间并且你不希望你的视图冻结,你就应该从主队列中派出。

尝试第9讲: https://itunes.apple.com/en/course/developing-ios-8-apps-swift/id961180099

更新 Swift 版本):

虽然我不知道如何在 Obj-C 中编写它,但它在 Swift 中看起来像这样,你可以稍后将它转换回的OBJ-C

dispatch_async(notTheMainQueue) {
    // Some time consuming stuff you're doing (downloading data, calculating..)
    ...
    dispatch_async(dispatch_get_main_queue) {
        // Set your view here, which dispatches *back* to the main queue and will not block your UI
        ...
    }
}
相关问题