で作られたカスタムマップビューがありUIScrollViewます。スクロールビューのサブビューは。で裏打ちされていCATiledLayerます。ここではすべてがうまく機能します。パンとズームは新しいマップタイルをロードし、すべてがうまく機能します。
私がやりたいのは、アニメーションのビデオのフレームをこのスクロールビューにキャプチャすることです。contentOffset基本的に、スクロールビューとのアニメーション化された変更のビデオを作成したいと思いますzoomScale。
プライベートAPI関数UIGetScreenImage()を取得してアプリの画面をたとえば10fpsでキャプチャし、これらの画像を組み合わせて、スクロールビューアニメーションで使用されるタイミングカーブを備えたスムーズな再生アニメーションを取得できるため、コンセプトは適切であることがわかります。
もちろん、私の問題は、プライベートAPIを使用できないことです。ここでAppleが概説した代替案を検討するCALayerと、おそらく有効な選択肢が1つ残っていrenderInContextますUIGraphicsGetImageFromCurrentImageContext()。
CATiledLayerただし、これは裏付けのあるビューでは機能しないようです。ブロック状のズームされていない画像は、高解像度のタイルが読み込まれないかのようにキャプチャされます。CATiledLayerパフォーマンスのためにバックグラウンドスレッドを描画し、メインスレッドから呼び出すとrenderInContext、これらの更新がキャッチされない可能性があることを考えると、これはある程度理にかなっています。タイルレイヤーもレンダリングしても、結果は同じpresentationLayerです。
CATiledLayerスクロールビューのアニメーションを含む過程で、Appleが認可したバックビューの画像をキャプチャする方法はありますか?またはいつでも、そのことについては?