在两个视图控制器中使用UIWebView

时间:2010-11-21 03:53:50

标签: iphone cocoa-touch

我有一个从URL加载内容的UIWebView - 我想在另一个视图控制器中显示该UIWebView的小版本,几乎就像一个按钮。

我可以从其控制器中获取UIWebView。如何在不同的视图控制器中显示其内容?

1 个答案:

答案 0 :(得分:2)

一个视图只能有一个超级视图;这意味着你无法真正使它渲染两次。

最简单的方法就是将它呈现给图像并在其他地方显示该图像:

#include <QuartzCore/CALayer.h>

...

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

注意事项:

  • UIWebView使用WebKit异步渲染到tile;上面的代码只渲染现有的tile。如果WebKit还没有渲染瓷砖,你就会变白。您可能必须在计时器或其他东西上运行它(然后它仍然不会那么可靠)。
  • 您需要使用UIGraphicsBeginImageContextWithOptions()支持“视网膜”。为了支持3.x / 4.x和4.x-only构建而需要跳过的箍数是有点痛苦的。
  • 缩放图像是读者的一项练习。
  • 创建较小的图像上下文并适当地更改CGContext的变换会更好。它也留给读者练习。