1

アニメーション中の任意の時点で拡大する円アニメーションの直径 (または半径) を取得する方法を知りたいです。サイズを取得した直後にアニメーションを停止することになりますが、円のサイズを取得するまで停止してレイヤーから削除することはできませんでした。

拡大する円のアニメーションがどのように実装されるかの例として、これは、 iPhone の Quartz2D レンダリングの拡大する円addGrowingCircleAtPoint:(CGPoint)pointの質問の回答のメソッドに示されている実装のバリエーションです。

レイヤー、アニメーションなどのさまざまな値を確認しようとしましたが、何も見つからないようです。最悪の場合、現在の時間をアニメーションに取り込んで最良の推測を試み、それを使用して、サイズの状態との間の状態に基づいて「あるべき」場所を割り出すことができます。これは、私が簡単に取得できるどこかで増加している値であると私が想定するものにとってはやり過ぎのようです。

アップデート:

トランスフォームを含むプレゼンテーション層でいくつかのプロパティを試しましたが、すべての値は、その時点でチェックされている円のサイズに関係なく、常に同じです。

4

2 に答える 2

2

さて、アニメーション中にアニメーションの現在の状態を取得する方法は次のとおりです。

Rob は近くにいたときに、重要な情報を 2 つ忘れていました。

まず、layer.presentationLayer.subLayers から、アニメーション化しているレイヤーを取得する必要があります。これは、私にとって利用可能な唯一のサブレイヤーです。

第 2 に、このサブレイヤーから変換に直接アクセスすることはできず、valueForKeyPath でアクセスして transform.scale.x を取得する必要があります。x は円であり、x と y は同じであるため、x を使用しました。

次に、これを使用して、円弧の作成に使用された値に基づいて、その時点での円のサイズを計算します。

于 2011-04-14T03:57:26.780 に答える
-1

あなたが到達しようとしているのは現在のCATransform3Dであり、そこからサークルサイズに到達できると思います。

あなたが欲しいのはですlayer.presentationLayer.transformCALayerpresentationLayer の詳細については、ドキュメントを参照してください。Core Animation Rendering Architectureも参照してください。

于 2011-04-13T03:44:46.570 に答える