在我的代码中,我试图在页面加载时显示一个UIWebView
,然后,当它完成时,从Web视图中捕捉图像以便稍后缓存和显示(所以我不必重新加载并渲染网页)。如何知道UIWebView何时完成对上下文的绘制?
我沿着线的东西:
CGContextRef context = CGBitmapContextCreate(…);
[[webView layer] renderInContext:context];
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imageRef];
我遇到的问题是,由于UIWebView
的瓷砖,有时只在页面的一半是由时间呈现给上下文我捕捉到了图像。
有没有办法检测或阻止UIWebView
的后台渲染线程,以便我可以在所有渲染完成后才能获取图像?
UPDATE:这可能是线程竞争条件是一个红鲱鱼(这是从文档不清晰,在任何情况下,无论是UIWebView
的定制层或一般块CATiledLayer
其后台线程) 。
这可能是一个失效问题(尽管在UIWebView
及其图层上对setNeedsDisplay
进行了几种调用)。在渲染之前更改UIWebView
的界限似乎消除了“不能绘制整个事物”的问题。
我仍然遇到了一个问题,即在旧秤上绘制几块瓷砖,但两次调用renderInContext:
似乎已经充分缓解了这一问题。