2011-02-07 11 views
4

シンプルなnswindowを表示するときに、CoreAnimationエフェクトを追加するにはどうすればよいですか?ココア - NSWindowアニメーションが表示されたら?

ありがとうございました

+0

あなたはどんな種類のアニメーションをより具体的に表示できますか? – Richard

+0

「フリップ」アニメーションは、私が好むアニメーションのようなもので、ユーザにとってはそれほど急なものではありません。 – lab12

答えて

6

私は前に説明したようにアニメーションを作成しました。しかし、それは簡単な仕事ではありませんでした。あなたのアニメーションはウィンドウ自体の境界の外側に広がるので、アニメーションを大きめで透明なウィンドウでレンダリングする必要があります。アニメーションが完了したら、実際のウィンドウで注文し、透明なものを取り除くことができます。

アニメーションのコンテンツとして使用するには、ウィンドウのイメージが必要です。そのため、ウィンドウを並べ替える(そしておそらくキーウィンドウにして焦点を合わせるようにする)ユーザーがそれを見ないように画面外に置いてください。次に、CGWindowListCreateImageを使用して、ウィンドウのスクリーンショットを取得します。これでアニメーションを作成するのに必要なものが得られます。

アニメーションが完了したら、実際のウィンドウを透明なウィンドウの上に並べてから透明なウィンドウを削除します。アニメーションと実際のウィンドウ内のウィンドウのイメージが少しトリッキーですが、それは間違いなく実行可能ですので、数学を正しく取得します。

+0

あなたはどのようにそれを「よく外に出せ」と言いましたか?私はそれを行うためにsetFrameを使ってみましたが、ウィンドウの小さな部分は常にオンスクリーンです。私。フレームワークはウィンドウを画面外に完全に移動させることはできません。 – Enchilada

+0

NSWindowをサブクラス化し、constrainFrameRect:toScreen:メソッドから変更されていないフレームを返すのは気にしないでください!ありがとう! – Enchilada

関連する問題