1

フルスクリーンの 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 ミリ秒) になり、これは役に立ちませんが、何らかのキャッシュが発生していることを示唆しています。

私は次のことを試しました:

  1. 私はスケールと不透明なパラメーター UIGraphicsBeginImageContextWithOptions を組み合わせて試してみました。スケールを .5 または 1.0 に設定すると、実際にはさらに遅くなります。

  2. CGContextSetInterpolationQuality(context, kCGInterpolationNone)を追加。性能に変化なし。

  3. webview.shouldRasterize=YES. 性能に変化なし。

  4. UIWebView を半分に縮小してからフルスクリーンにスケーリングします。これは役に立ちますが、まだ約 300ms です。

他のアイデアはありますか?これを ipad1-2 で実行しても問題ありませんが、ipad3 Retina ではパフォーマンスが低下します。

4

0 に答える 0