2009-05-13 19 views
10

Używam UIWebView do wyświetlania tekstu w formacie HTML. Nie ładuję strony internetowej, tylko dostarczam ciąg znaków HTML do UIWebView.Konwersja treści UIWebview do UIImage

Teraz chcę animować ten UIWebView na ekranie, w rzeczywistości kilka z nich (2-10 na raz). UIWebView jest trochę ciężki i chociaż jeszcze tego nie próbowałem, planuję najgorsze. (Nie sądzę, że to jest przedwczesna optymalizacja, jestem prawie pewien, że to będzie problem)

Aby obejść problem, doszedłem do wniosku, że mogę przekonwertować zawartość UIWebViews na UIImages i animować je w zamian.

Więc moje pytania to:

  1. Jak przekonwertować UIWebView zawartość do UIImage (lub CGImageRef)?
  2. Moje widoki UIWeb mają przezroczyste bacgrounds, czy przezroczystość zostanie przeniesiona do UIImage ?

Dzięki za wszelkie sugestie

Odpowiedz

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

może napotkasz problemów jeśli Webview wymiary są duże, ponieważ WebView używa CATiledLayer że nie wyciąga wszystko ze względów pamięci.

Obraz będzie obejmować przejrzystość

+0

Dzięki. Moje odsłony to tylko proste pojedyncze wiersze tekstu, więc nie sądzę, że to będzie problem. Sądzę, że wymiary obrazu to wymiary widoku internetowego na ekranie? –

+0

Może być konieczne wywołanie metody sizeToFit: po załadowaniu strony internetowej, aby uzyskać podgląd strony internetowej o dokładnym rozmiarze treści –

+0

po prostu z ciekawości, dlaczego chcesz wyświetlać pojedyncze wiersze tekstu jako UIWebView? – Thomas

0

mogę się mylić, ale jeśli ustawić param cache CoreAnimation OS obsłuży tej optymalizacji dla Ciebie.

np.

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

Robię animację ścieżki, więc nie mogę używać wygodnych metod UIView, ale ich może być coś (prawdopodobnie jest) w CA, które działa w podobny sposób ... –