4

w私はこのコードを使用してカカオウェブビューのスクリーンショットをキャプチャしようとしています:

NSBitmapImageRep *bitmapRepRight = [[webView mainFrame].frameView bitmapImageRepForCachingDisplayInRect:cacheRect];

[[[webView mainFrame].frameView  documentView] layout];

[[webView mainFrame].frameView cacheDisplayInRect:cacheRect toBitmapImageRep:bitmapRepRight];

return [bitmapRepRight CGImage];

このコードは、-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame関数から呼び出されます。

ページの背景だけを取得していますが、テキストも画像も取得していません。

[self PerformSelector:@selector(addPagesToCache)withObject:nil afterDelay:0.01]を使用して呼び出すと、その後は機能しますが、これはまったくクリーンな方法ではありません。

何が問題になる可能性があり、どうすれば修正できますか?

4

1 に答える 1

0

WebView が (ウィンドウ内に) 表示されている場合、CGWindowListCreateImage を使用してウィンドウの部分的な画像を取得できます。これも回避策であり、完全な解決策ではありません。

于 2013-10-29T12:49:46.757 に答える