我正在UIWebView
中加载HTML字符串,文本内容会在一秒钟内加载,但HTML
字符串中有很多图片,导致此图片UIWebView
被冻结,之后加载我的屏幕可以免费使用的所有图像。
对此有何建议?
答案 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
...
}
}