3

ウィンドウのサイズに応じて、2 つのレイアウトのいずれかに配置する NSView がいくつかあります。

関連するスーパービューが resizeSubviewsWithOldSize メソッドを受け取ったときにレイアウトを調整しています。

これは機能しますが、変更をアニメーション化したいと思います。当然、新しいフレームを設定するときにアニメータープロキシを呼び出してみましたが、ユーザーがまだドラッグしている間はアニメーションは実行されません。アニメーションが予定されている前にマウスを放すと、アニメーションの最後尾を見ることができますが、それまでは何もありません。kCATransactionDisableActions が NO に設定されていることを確認しようとしましたが、役に立ちませんでした。

新しいアニメーションを開始して、サイズ変更中に実際に実行することはできますか?

4

2 に答える 2

2

CAのアニメーションはタイマーを介して実行され、ユーザーがドラッグしているときにアクティブな実行ループモードの間はタイマーが起動しないため、これを簡単に行うことはできないと思います。

ユーザーがドラッグしているときにランループを制御できる場合は、ランループモードを試してみてください。それはそれを機能させるでしょう。CA側では変更できないと思います。

于 2008-10-14T04:00:09.603 に答える
0

これは実際には答えではありませんが、ドラッグしてウィンドウのサイズを変更している間は何もアニメーション化しないことをお勧めします。画面は既に (ウィンドウの移動によって) アニメーション化されています。これ以上のアニメーションは、視覚的に混乱し、余計なものになる可能性があります。

CoreAnimation 効果は、ある既知の状態から別の状態に移行するために最適に使用されます。たとえば、環境設定ウィンドウが新しいペインのコンテンツに合わせてサイズ変更され、古いサイズと新しいサイズの両方がわかっている場合、またはオブジェクトをフェード インまたはフェード アウトする場合などです。 (または両方)。ウィンドウのサイズ変更中にアニメーションを実行すると、視覚的にわかりにくくなり、ユーザーがウィンドウを目的のサイズにすることに集中することが難しくなります。

于 2008-09-28T21:39:52.477 に答える