0

画面に表示されるカスタムアニメーションを変更したいCALayerがあります。メソッドをキャッチできるように、デリゲートを作成しました。

- (id < CAAction >)actionForLayer:(CALayer *)layer forKey:(NSString *)key

そして、キーがkCAOnOrderInと等しいかどうかを確認しますが、レイヤーにはまだ境界が何であるかが通知されていません(現在、境界について(0、0、0、0)を報告しています)。そこで、キーが「境界」に等しいかどうかを確認しようとしましたが、同じrect(0、0、0、0)が報告されます。

私がやりたいアニメーションは、レイヤーが不透明度を介して画面上で徐々に「フェードアウト」するのではなく、画面の小さな部分から完全な範囲まで成長させたいものです。しかし、それを行うには、それが完全な範囲になることを知る必要があります。カスタムアニメーションを置き換えることができるようにそれを知る方法はありますか、それとも単にこれを間違った方法でアプローチしているだけですか?

ありがとう

4

1 に答える 1

1

私はこれが 3 か月前のものであることを知っていますが、同様の問題に対する回答を探していましたが、これには回答がないことに気付きました (担当者が欲しいです ;)

私は UIView (iPhone SDK) の actionForLayer:forKey: を上書きしています。これは、アンカーポイントに別のアクションを挿入するために、バッキング CALayer へのデリゲートとして自動的に設定されます。CALayer の presentationLayer を介して古い値にアクセスできることに気付きました。新しい値は modelLayer にあります。しかし、あなたの場合に起こっていると思うのは、レイヤーに境界があることを伝える前に、システムが onOrderIn アクションを呼び出していることです (おそらく、レイヤーがビュー階層に追加された時点で)。実際、これは正常です。

「onOrderIn」キーに加えて「境界」を待つ必要があります。

他のキーを待っていますか?「onOrderOut」または「非表示」?

乾杯、コリン

于 2010-06-03T12:47:34.817 に答える