フルスクリーンの UIWebView のコンテンツを UIImage に非常に迅速に変換する必要があるページ フリップ タイプのアプリケーションを用意します (例: 200 ミリ秒のトップ)。速度のために品質を犠牲にしても問題ありません。iPad3 Retina でこれに近づくのは本当に大変です。
私は一般的なrenderInContextメソッドをやっているUIImageを作成してください:
UIGraphicsBeginImageContextWithOptions(frame.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
ipad3 Retina ディスプレイでは、通常 400 ~ 500 ミリ秒と表示されます。興味深いことに、メソッドが 2 回目に実行されると、はるかに高速 (約 100 ミリ秒) になり、これは役に立ちませんが、何らかのキャッシュが発生していることを示唆しています。
私は次のことを試しました:
私はスケールと不透明なパラメーター UIGraphicsBeginImageContextWithOptions を組み合わせて試してみました。スケールを .5 または 1.0 に設定すると、実際にはさらに遅くなります。
CGContextSetInterpolationQuality(context, kCGInterpolationNone)を追加。性能に変化なし。
webview.shouldRasterize=YES. 性能に変化なし。
UIWebView を半分に縮小してからフルスクリーンにスケーリングします。これは役に立ちますが、まだ約 300ms です。
他のアイデアはありますか?これを ipad1-2 で実行しても問題ありませんが、ipad3 Retina ではパフォーマンスが低下します。