2009-05-13 18 views
10

Sto usando un UIWebView per visualizzare testo formattato in HTML. Non sto caricando una pagina web, semplicemente fornendo una stringa di HTML a UIWebView.Converti i contenuti di UIWebview in una UIImage

Ora voglio animare questo UIWebView sullo schermo, in realtà molti di loro (2-10 alla volta). UIWebView è un po 'pesante, e anche se non l'ho ancora provato, sto pianificando il peggio. (Non penso che si tratti di ottimizzazione prematura, sono quasi certo che questo sarà un problema)

Per aggirare il problema, ho pensato di convertire i contenuti di UIWebViews in UIImages e animarli.

Quindi, le mie domande sono:

  1. Come si fa a convertire UIWebView contenuti ad un UIImage (o CGImageRef)?
  2. Le mie UIWebViews hanno bacgrounds trasparenti, la trasparenza viene trasferita alla UIImmagine UII?

Grazie per eventuali suggerimenti

risposta

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

si potrebbe incorrere in problemi se le dimensioni WebView sono grandi perché il WebView utilizza un CATiledLayer che non attira tutto per ragioni di memoria.

L'immagine includerà la trasparenza

+0

Grazie. Le mie visualizzazioni Web sono solo semplici righe di testo, quindi non penso che sarà un problema. Immagino che le dimensioni dell'immagine siano le dimensioni della webview sullo schermo? –

+0

Potrebbe essere necessario chiamare sizeToFit: dopo che la webview viene caricata, per ottenere la visualizzazione Web delle dimensioni esatte del contenuto –

+0

solo per curiosità, perché si desidera visualizzare singole righe di testo come UIWebView? – Thomas

0

Potrei sbagliarmi, ma se si imposta il parametro di cache di Core Animation il sistema operativo di gestire questa ottimizzazione per voi.

ad es.

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

Sto facendo un'animazione di percorso, quindi non posso usare i metodi di convenienza di UIView, ma potrebbero essere qualcosa (probabilmente lo è) in CA che funziona in modo similare ... –

Problemi correlati