2009-05-13 11 views
10

Estoy usando un UIWebView para mostrar texto con formato HTML. No estoy cargando una página web, solo estoy suministrando una cadena de HTML a UIWebView.Convierte contenido de UIWebview a un UIImage

Ahora quiero animar este UIWebView en la pantalla, en realidad varios de ellos (2-10 a la vez). UIWebView es un poco pesado, y aunque todavía no lo he intentado, estoy planeando lo peor. (No creo que esto sea una optimización prematura, estoy casi seguro de que esto será un problema)

Para solucionar el problema, pensé que podría convertir los contenidos de UIWebViews a UIImages y animarlos en su lugar.

Por lo tanto, mis preguntas son:

  1. ¿cómo convertir UIWebView contenido a un UIImage (o CGImageRef)?
  2. Mis UIWebViews tienen fundamentos transparentes, ¿la transparencia se transferirá al UIImage?

Gracias por cualquier sugerencia

Respuesta

21
UIGraphicsBeginImageContext(webview.bounds.size); 
[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Es posible que tenga problemas si las dimensiones WebView son grandes debido a que la vista web utiliza un CATiledLayer que no llama todo por razones de memoria.

La imagen incluirá la transparencia

+0

Thanks.My vistas de la web son simples líneas simples de texto, por lo que no creo que sea un problema. ¿Supongo que las dimensiones de la imagen son las dimensiones de la vista web en la pantalla? –

+0

Puede que necesite llamar a sizeToFit: después de que se cargue la vista web, para obtener la vista web del tamaño exacto del contenido –

+0

solo por curiosidad, ¿por qué quiere mostrar líneas de texto individuales como UIWebView? – Thomas

0

Podría estar equivocado, pero si se establece el parámetro de caché CoreAnimation el sistema operativo se encargará de esto optimización para usted.

p. Ej.

[UIView setAnimationTransition:transition forView:self.view cache:YES]; 
+0

Estoy haciendo una animación de ruta, por lo que no puedo usar los métodos de conveniencia de UIView, pero puede ser algo (probablemente lo es) en CA que funciona simalarly ... –

Cuestiones relacionadas