UIWebViewを介して表示されるいくつかのページのサムネイルを生成しようとしています。問題は、すべての画像が灰色またはUIWebViewに設定した背景色として表示されることです。ページをロードするのに十分な時間をWebビューに許可していない可能性がありますか?
私は次のことをしたいと思っています。
- 画面に表示されない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