克服すべき非常に興味深い障害があります。UIView のライブ コンテンツを別の別の UIView に表示しようとしています。
私が達成しようとしているのは、Mac OS X の Mission Control と非常によく似ています。Mission Control では、中央にデスクトップまたはアプリケーションを表示する大きなビューがあります。その上に、再編成できる小さなビューがあります。これらの小さなビューには、対応するアプリのライブ プレビューが表示されます。プレビューは瞬時に表示され、フレームレートは正確です。最終的に、私はこの効果をできるだけ安く再現しようとしています。
私は多くの可能な解決策を試しましたが、ここに示されているものは私が得た限り近いものです. それは機能しますが、- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
変更のたびにメソッドが呼び出されるわけではありません。私の解決策は[cloneView setNeedsDisplay]
CADisplayLink を使用して呼び出すことだったので、画面が更新されるたびに呼び出されます。私の目標に非常に近いですが、フレームレートは非常に低いです。[CALayer renderInContext:]
それは遅すぎると思います。
2 つの CALayer で同じソースをレンダリングすることが可能であれば、それは理想的です。ただし、これにアプローチする方法がわかりません。幸いなことに、これは単なるコンセプト アプリであり、App Store 向けではないため、プライベート API を利用できます。IOSurface と Quartz のコンテキストを調べましたが、これまでのところこのパズルを解くことができませんでした。どんな入力でも大歓迎です!