- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 try catch UIWebView 的内容,包括用户不可见的内容。即整个网页,即使用户只看顶部。
环顾四周,我发现捕获 UIView 的最佳方法是检索其图层并使用 renderInContext。
然而,UIWebView 似乎正在使用自己的 CALayer 实现,其行为更像 CATiledLayer,尽管它仍然声称是标准 CALayer。当我调用 renderInContext 时,我只获取网页的一部分(最多向下 940 像素),而不是整个页面。
有没有人对如何执行以下任一操作有任何想法:强制 UIWebView 向下滚动另一个 940px(显然这远非理想),或者告诉它支持 WebView 的任何 CALayer 品种,以便在我询问时呈现其所有内容到。
干杯
编辑:我应该补充一点,当前更改 webview 的框架以适应通过 javascript 检索的页面的大小。
最佳答案
我已经发布了一个应用程序 ( Web2Pic ) 来做到这一点,请相信我 UIGraphicsBeginImageContext(webView.frame.size);除了从 UIWebView 的可见区域获取小图像之外什么也做不了;-(
正确的方法有点复杂,但它确实有效:
1.在我们的UIWebView中使用JavaScript来获取这些浮点值:
//Whole page size in HTML coordinate
document.body.scrollWidth
document.body.scrollHeight
//UIWebView visible size in HTML coordinate
window.innerWidth
window.innerHeight
2.现在我们可以将整个页面“切割”成几十个UIWebView大小的小块。然后我们可以单独捕获每个小块并将它们保存到我们的缓存中。我通过计算页面偏移量并使用 UIGraphicsBeginImageContext(webView.frame.size); 来获取图像数组来实现此目的。另外,您应该将图像数组缓存到文件系统中,否则应用程序最终会崩溃!
3.当我们最终获得所有小块时,我们可以启动全分辨率上下文:UIGraphicsBeginImageContext(CGSizeMake(document.body.scrollWidth,document.body.scrollHeight));
4.根据坐标将每个小图像渲染到大上下文中。并且小心角落,每行/行中的最后一个图像可能不是完整图像。
5.还剩下一步:保存大图。 不要将其保存到相册中,因为iOS会自动降低相册中图像的分辨率。相反,我们可以将其保存到文件系统中并启用应用程序的 iTunes 文件共享 支持,甚至编写一个简单的应用程序内照片管理器。
希望这些能有所帮助;-)
姬一朝峰
关于iphone - 将 UIWebView 渲染到 ImageContext 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469764/
我试图使图像的角变圆,但 ImageContext 中的图像失真了。 这是我正在采取的步骤: - (UIImage *)decodeBase64ToImage:(NSString *)strEncod
我正在 try catch UIWebView 的内容,包括用户不可见的内容。即整个网页,即使用户只看顶部。 环顾四周,我发现捕获 UIView 的最佳方法是检索其图层并使用 renderInCont
我正在绘制到自动释放池内的 ImageContext 以控制我的内存占用,并从自动释放池内部返回图像。我在这个调用中发生了崩溃,我想知道它是否是由于调用函数使用之前在自动释放池中释放的图像引起的。这是
出于某种原因,当尝试创建一 strip 圆角的线时,除了这两个属性外,所有其他属性都被应用 UIGraphicsBeginImageContextWithOptions(size, opaque,
如果使用以下方法创建图像上下文: UIGraphicsBeginImageContextWithOptions(CGSizeMake(768, 768), YES, 1.0); 有没有办法稍后获取上下
我是一名优秀的程序员,十分优秀!