En mi código intento mostrar un UIWebView
mientras se carga una página, y luego, cuando termina, capturar una imagen de la vista web para almacenarla en caché y mostrarla más tarde (para no tener que volver a cargarla ni procesarla) página web).¿Cómo puedo saber cuándo un UIWebView ha terminado de dibujar en un contexto?
tengo algo en la línea de:
CGContextRef context = CGBitmapContextCreate(…);
[[webView layer] renderInContext:context];
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imageRef];
El problema que estoy corriendo en es que, debido a la UIWebView
's alicatado, a veces sólo la mitad de la página se representa con el contexto en el momento Capturo la imagen.
¿Hay alguna forma de detectar o bloquear el hilo de representación de fondo de UIWebView
para que solo pueda obtener la imagen una vez que haya finalizado todo el renderizado?
ACTUALIZACIÓN: Puede ser que las condiciones de carrera hilo eran una cortina de humo (no está claro a partir de la documentación, en todo caso, si la capa personalizada UIWebView
's o una CATiledLayer
en bloques general sobre sus subprocesos en segundo plano) .
Esto en su lugar puede haber sido un problema de invalidación (a pesar de varias clases de llamadas a setNeedsDisplay
tanto en el UIWebView
y su capa). Cambiar los límites del UIWebView
antes de representarlo parece haber eliminado el problema de "no dibujar todo".
Todavía me encontré con un problema en el que se dibujaban algunas teselas en la escala anterior, pero llamar al renderInContext:
dos veces parece haber mitigado lo suficiente.