【问题标题】:screenshot uiwebview content截图 uiwebview 内容
【发布时间】:2011-06-12 19:59:23
【问题描述】:

我想做一个UIWebView的截图,我用这个代码

代码:

UIGraphicsBeginImageContext(self.vistaWeb.bounds.size);
[vistaWeb.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage,nil,NULL,NULL);

而且效果很好,我的问题是我想制作所有 uiwebview 的屏幕截图,不仅是可见视图...例如,我有一个 200x200 的 uiwebview,但页面是 200x500,我使用这段代码做200x200的截图,我想做200x500的截图,怎么办?

kikko088

【问题讨论】:

  • @kikko088:你好我也面临同样的问题。你能分享你的代码吗?请尽快帮助。谢谢!

标签: iphone image uiwebview


【解决方案1】:

问题出在一行:

UIGraphicsBeginImageContext(self.vistaWeb.bounds.size);

您使用的是视图的大小,而不是其内容的大小。为了获得您的页面大小,请使用以下approach。然后只需将self.vistaWeb.bounds.size 替换为适当的大小即可。

为了支持 Retina,您应该将代码的第一行替换为以下内容:

CGSize layerSize = ...
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) {
    UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f);
} else {
    UIGraphicsBeginImageContext(layerSize);
}

【讨论】:

  • 非常感谢!现在是完美的......只是另一个问题,我怎样才能提高图像质量?现在是低-低质量..
  • @kikko088 图像将与屏幕上完全相同。我能想到的唯一问题是您的代码不适用于视网膜设备。以下是为所有设备启动图像上下文的正确方法:codinggeek.org/2011/02/21/…
  • 这里我放了 3 张截图,以及相机胶卷的照片,webview 准备好在视网膜显示,所有图像都是 svg(然后是矢量图像) www.endurodoc.net/1.png www .endurodoc.net/2.png www.endurodoc.net/3.png
  • 我试了一下,但质量是一样的...我用另一种方式解决了,我创建了一个 pdf 而不是图像... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多