Does someone know of a way, or has a creative idea as to how to obtain an UIImage that is rendered from a UIWebView? The catch is, that is must be on a background thread.
I'll elaborate: I'm trying to obtain the image from multiple UIWebViews every second+-, and display it on screen (iPhone's of course). Because rendering a layer to a CGContext is a CPU consuming job, I wouldn't like to use the main thread, so not to hang the UI.
My attempts so far were:
I tried to use
renderInContext
on the webView's layer to theUIGraphicalContext
, but the_WebTryThreadLock
error crashed the webviews.I tried creating a
CGBitmapContext
, and render the webview's layer to it, but got the same result.I tried implementing a
copy
method (by adding a Category) toCALayer
, that deep copied all of the public properties, and sublayers. Afterwards, I tried torenderInContext
the layer I copied. I got a UIImage that was partially "correct" - meaning, not all of the layers were rendered, so for example, i would get only the website header (or footer, or body, or search bar, or just a some of the frames). The UIWebview's layer consists of all sort of subclassed CALayers, so this is probably why this approached didn't work.I tried setting the
kCATransactionDisableActions
in aCATransaction
, but it didn't appear to change this behavior (neither of them).
I'm pretty close to giving up.
Is there a savior among you people?