2009-05-13 3 views
10

Я использую UIWebView для отображения текста в формате HTML. Я не загружаю веб-страницу, просто поставляя строку HTML в UIWebView.Преобразование содержимого UIWebview в UIImage

Теперь я хочу анимировать этот UIWebView на экране, фактически несколько из них (по 2-10 за раз). UIWebView немного тяжелый, и, хотя я еще не пытался его, я планирую худшее. (Я не думаю, что это преждевременная оптимизация, я почти уверен, что это будет проблемой)

Чтобы решить эту проблему, я решил, что смогу преобразовать содержимое UIWebViews в UIImages и анимировать их.

Итак, мои вопросы:

  1. Как преобразовать UIWebView содержимое в UIImage (или CGImageRef)?
  2. Мои UIWebViews имеют прозрачные базы, будет ли прозрачная прозрачность переноситься на UIImage?

Спасибо за любые предложения

ответ

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

Вы можете столкнуться с проблемами, если WebView размеры велики, так как WebView использует CATiledLayer, не рисовать все по причинам памяти.

Изображение будет включать в себя прозрачность

+0

Thanks.My webviews - это просто простые текстовые строки, поэтому я не думаю, что это будет проблемой. Я предполагаю, что размеры изображения - это размеры веб-экрана на экране? –

+0

Возможно, вам потребуется вызвать sizeToFit: после загрузки веб-просмотров, чтобы получить веб-просмотр точного размера содержимого –

+0

просто из любопытства, почему вы хотите отображать отдельные строки текста в виде UIWebView? – Thomas

0

Я мог бы быть неправильно, но если вы установите кэш параметров из CoreAnimation ОС будет обрабатывать эту оптимизацию для вас.

например.

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

Я делаю анимацию пути, поэтому я не могу использовать методы удобства UIView, но они могут быть чем-то (возможно, есть) в CA, который работает simalarly ... –

Смежные вопросы