Mac OS Xドックのようなファンビュー(「ダウンロード」や「ドキュメント」フォルダなど)をCocoaで実装しようとしています。ファンビューを実装する - Cocoa
私は現在、透過ウィンドウのコンテンツビューにボタンを追加し、NSViewAnimation
(グループアニメーション)を使用してボタンのフレームをアニメートしています。しかし、アニメーションは期待通りに滑らかではありません。
これを実装するための他の最適化方法はありますか?
Mac OS Xドックのようなファンビュー(「ダウンロード」や「ドキュメント」フォルダなど)をCocoaで実装しようとしています。ファンビューを実装する - Cocoa
私は現在、透過ウィンドウのコンテンツビューにボタンを追加し、NSViewAnimation
(グループアニメーション)を使用してボタンのフレームをアニメートしています。しかし、アニメーションは期待通りに滑らかではありません。
これを実装するための他の最適化方法はありますか?
これにはCore Animationを使用する必要があります。アニメーション全体を収めるのに十分な大きさの透明なビュー/ウィンドウを作成する必要があります。その後、CALayer
オブジェクトを使用して実際のアニメーションを実行する必要があります。
コアアニメーションレイヤーは基本的にOpenGLサーフェスの周囲の高レベル軽量ラッパーで、レイヤーのレンダリングはGPUによって行われ、NSViewAnimation
などのCPU管理アニメーションよりもはるかに優れたパフォーマンスを提供します。
コアアニメーションレイヤーは軽量であるため、イベントハンドリングは組み込まれていないため、ビュー/ビューコントローラですべてのマウストラッキングを行う必要があります。
他のオプションでは、レイヤー付きビュー(独自のCALayer
)が使用され、アニメータプロキシを使用してボタンの位置がアニメートされます。これは、あなたが望むものを達成するのに十分であるかもしれません。ボタンがまだいっぱいであるので、NSButton
オブジェクトには、まだ、すべてのNSView
イベント処理があります。
これらの技術がどのように機能するかを知るには、おそらくAnimation Overviewをお読みください。