【发布时间】:2014-06-29 20:52:28
【问题描述】:
我正在尝试保存整个 UIWebView 的屏幕截图。但是:如果网页很长,有很多 javascript 或动态对象,并且如果我不手动(并且耐心地!)滚动所有页面,webview 永远不会加载一些保持灰色和永远卸载的区域。 如何加载整个网页?或者这是一个不同的问题? 互联网上没有任何东西对我有帮助。 谢谢。
更新:
这是我目前在“PrintButton”IBAction 中所做的:
// save old frame of webView
CGPoint savedContentOffset = _webPage.scrollView.contentOffset;
CGRect savedFrame = _webPage.scrollView.frame;
CGSize webPageSize = CGSizeMake(_webPage.scrollView.contentSize.width, _webPage.scrollView.contentSize.height);
CGRect stringRect = CGRectMake(0, 0, webPageSize.width, webPageSize.height);
// set new frame
_webPage.scrollView.contentOffset = CGPointZero;
_webPage.scrollView.frame = stringRect;
UIGraphicsBeginImageContextWithOptions(webPageSize,NO,1.0);
[_webPage.scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
self.viewImage = UIGraphicsGetImageFromCurrentImageContext();
// re-set old frame
_webPage.scrollView.contentOffset = savedContentOffset;
_webPage.scrollView.frame = savedFrame;
UIGraphicsEndImageContext();
// save in gallery
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
代码有效:图像保存在我的照片库中。但是如前所述,如果网页很复杂,很长,很重,我不知道是什么,会出现空白区域(我说灰色是因为 webview 的背景是灰色的)。 通常,如果我在按下打印按钮之前不滚动页面,我未滚动的页面的 95% 是空白的,灰色的。
【问题讨论】:
-
你想做什么??是快照问题还是开发问题?
-
请更具体。你具体做了什么?贴一些代码
-
我发布了一些代码并解释了我的问题。我希望很清楚,抱歉,英语不是我的母语。
-
您是否可以加载页面,使其缩小以适应屏幕? (webView.scalesPageToFit = YES;) 加载后,然后以某种方式放大,然后截取屏幕截图?玩弄它,看看会发生什么。只是一个想法。祝你好运。
-
Guntis,我认为这是一个好主意(让所有网页同时可见,等到它加载然后重新缩放它),但我尝试了 scalesPageToFit 但它没有这样做...
标签: ios scrollview snapshot