Создание UIImage путем рендеринга UIWebView в фоновом потоке - iPhone

Кто-нибудь знает способ или имеет творческую идею относительно того, как получить UIImage, отображаемый из UIWebView? Уловка в том, что это должно быть в фоновом потоке.

Я уточню: Я пытаюсь получать изображение из нескольких UIWebView каждую секунду + - и отображать его на экране (конечно, на iPhone). Поскольку рендеринг слоя в CGContext - это работа, потребляющая ресурсы ЦП, я бы не хотел использовать основной поток, чтобы не зависать пользовательский интерфейс.

Мои попытки были такими:

  • Я пытался использовать renderInContext на слое webView в UIGraphicalContext , но ошибка _WebTryThreadLock привела к сбою веб-представлений.

  • Я попытался создать CGBitmapContext слой webview к нему, но получил тот же результат.

  • Я попытался реализовать метод copy (добавив категорию) в CALayer , который глубоко скопировал все общедоступные свойства, и подслои. Впоследствии Я попытался renderInContext скопированный мной слой. Я получил UIImage, который был частично «правильным» - это означает, что не все слои были отрисованы, поэтому, например, я бы получил только верхний колонтитул веб-сайта (или нижний колонтитул, или тело, или панель поиска, или просто некоторые кадры). Уровень UIWebview состоит из всевозможных подклассов CALayers, поэтому, вероятно, поэтому этот подход не сработал.

  • Я пытался установить kCATransactionDisableActions в CATransaction , но это не помогло Похоже, это поведение не меняет (ни один из них).

Я довольно близок к тому, чтобы сдаться.

Есть ли среди вас спаситель?

9
задан Gilbert 11 January 2011 в 18:07
поделиться