我正在尝试生成将通过 UIWebView 显示的几个页面的缩略图。问题是所有图像都是灰色或我为 UIWebView 设置的背景颜色。难道是我没有让网络视图有足够的时间来加载页面?
我相信我想做以下事情:
- 创建一个在屏幕上不可见的 UIWebView
- 设置图形上下文
- 对于每一页:
- 在 web 视图上调用 loadRequest
- 在图形上下文中渲染 Web 视图
- 截屏
- 结束图形上下文
这是我对单个图像的代码:
UIWebView *screenWebView = _screenshotWebView;
UIView *screenView = _screenshotView;
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) {
UIGraphicsBeginImageContextWithOptions(screenView.bounds.size, NO, 2.0f);
} else {
UIGraphicsBeginImageContext(screenView.bounds.size);
}
[screenWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:path ofType:@"html"]isDirectory:NO]]];
[screenView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我在 XIB 文件中定义_screenshotWebView
和定义,_screenshotView
因为我认为我可能没有正确初始化它们。
有什么想法吗?谢谢!
编辑:这是一些实现此功能的代码,以防其他人需要它: https ://github.com/rmcl/webview_screenshot