В моем коде я пытаюсь показать UIWebView
при загрузке страницы, а затем, когда это будет сделано, захватить изображение из веб-представления в кеш и отобразить позже (так что мне не нужно перезагружать и отображать веб-страница).Как узнать, когда UIWebView закончил рисование в контексте?
У меня есть кое-что вдоль линий:
CGContextRef context = CGBitmapContextCreate(…);
[[webView layer] renderInContext:context];
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imageRef];
Проблема я бегу в том, что из-за UIWebView
«s черепицей, иногда только половина страницы, визуализируется в контексте к тому времени Я фиксирую изображение.
Есть ли способ обнаружить или заблокировать на потоке рендеринга фона UIWebView
, чтобы я мог получить изображение только после того, как весь рендеринг закончен?
UPDATE: Это может быть то, что условия нить гонки были отвлекающим маневром (неясно, из документации, в любом случае, независимо от того UIWebView
«s пользовательского слоя или CATiledLayer
в общих блоках на его фоне потоков) ,
Это может быть проблема аннулирования (несмотря на несколько видов звонков на setNeedsDisplay
как на UIWebView
, так и на его слой). Изменение границ UIWebView
перед рендерингом, похоже, устранило проблему «не рисовать все».
У меня все еще возникла проблема, когда в старой шкале было нарисовано несколько плиток, но вызов renderInContext:
дважды, похоже, достаточно смягчил это.