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