我正在尝试在滚动动画发生期间加载带有数据的 Web 视图。动画调用是这样的:
[scrollView scrollRectToVisible:aFrame animated:YES];
问题是,如果 web 视图加载过程与滚动视图动画重叠,则动画会卡顿,不会出现流畅的动画。似乎加载过程正在阻塞主线程,因此动画无法按预期工作。
我能做些什么来解决这个问题?在一些帖子中,人们建议将 webview 作为子视图放在
- (void)webViewDidFinishLoad:(UIWebView *)theWebView
方法。但是如果我这样做,加载的数据是不可见的。
感谢帮助。
编辑1:
@弗拉德
我猜这个解决方案不起作用。我这样调用 webview 加载:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) {
[_webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:path]];
});
但我看到虽然 loadHTMLString: baseURL: 方法是在非主线程中调用的,
- (void)webViewDidStartLoad:(UIWebView *)theWebView
和
- (void)webViewDidStartLoad:(UIWebView *)theWebView
方法在主线程中调用。所以这种方法并没有给我带来改进。
另外作为一个细节,在 webViewDidStartLoad 和 webViewDidFinishLoad 方法之间传递的时间接近 0.3 秒。
还有什么可做的?