2010-11-21 3 views
0

У меня есть UIWebView, который загружает контент из URL-адреса - и я хотел бы отобразить небольшую версию, почти как кнопку, этого UIWebView в другом контроллере представления.Использование UIWebView в двух контроллерах представления

Я могу захватить UIWebView с его контроллера. Как я могу отобразить его содержимое в другом контроллере?

ответ

2

Вид может иметь только один вид сверху; это означает, что вы не можете сделать это дважды.

Самый простой способ сделать то, что вы просите, чтобы сделать его к изображению, и что дисплей это изображение в другом месте:

#include <QuartzCore/CALayer.h> 

... 

UIGraphicsBeginImageContext(webview.frame.size); 
[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Предостережения:

  • UIWebView использует WebKit для отображения асинхронно плитка; приведенный выше код только отображает существующие фрагменты. Если WebKit еще не отобразил плитки, вы просто получите белый цвет. Возможно, вам придется запускать его на таймере или что-то в этом роде (и тогда он все равно будет не таким надежным).
  • Для поддержки «сетчатки» вам необходимо использовать UIGraphicsBeginImageContextWithOptions(). Количество обручей, которые вам нужно перепрыгнуть, чтобы поддерживать сборки 3.x/4.x и 4.x, - это немного боль.
  • Масштабирование изображения - это упражнение для читателя.
  • Создание меньшего контекста изображения и изменение преобразования CGContext должно быть еще лучше. Он также оставлен в качестве упражнения для читателя.
Смежные вопросы