在我的代码中,我试图显示一个UIWebView
正在加载的页面,然后,当它完成时,从Web视图捕获图像以便稍后缓存和显示(所以我不必重新加载和呈现网页) .
我有类似的东西:
CGContextRef context = CGBitmapContextCreate(…); [[webView layer] renderInContext:context]; CGImageRef imageRef = CGBitmapContextCreateImage(context); UIImage *image = [UIImage imageWithCGImage:imageRef];
我遇到的问题是,由于UIWebView
平铺,有时只有一半的页面在我捕获图像时被渲染到上下文中.
有没有办法检测或阻止UIWebView
背景渲染线程,这样我才能在所有渲染完成后才能获取图像?
更新:可能是线程竞争条件是红色鲱鱼(从文档中无论如何都不清楚,无论UIWebView
是自定义层还是CATiledLayer
后台线程中的常规块).
这可能是一个无效问题(尽管对它和它的层setNeedsDisplay
都有几种调用UIWebView
).更改UIWebView
渲染之前的界限似乎已经消除了"不绘制整个事物"的问题.
我仍然遇到了一个问题,即在旧规模上绘制了几块瓷砖,但是renderInContext:
两次调用似乎已经足够了.