2012-01-14 12 views
6

私は、ビューがアニメーション化されているかどうかを検出する方法を見つけようとしています。iOSで実行中のアニメーションを検出する方法はありますか?

ケースインポイント:パフォーマンスのためにshadowPathを指定して、ビューのレイヤーにシャドウを適用しました。ビューのサイズが変更されると、影がアニメーション化されます。私はビューのフレームを観察し、それに応じてレイヤのshadowPathを変更することができます。しかし、ビューのサイズが変更されている間、変更はアニメートされていないので、シャドウは先にジャンプします。

私はCABasicAnimationを使ってshadowPathをアニメーション化する方法を知っていますが、アニメーションにも適用できるように、進行中のアニメーションのプロパティを知る必要があります(主に:duration、easing)。

これはフレームワークタイプのコンポーネントなので、事前に期間とイージングプロパティを知っているとは思えません。

フレームを観察しているときに開始/実行アニメーションを検出する方法はありますか?

答えて

12

あなたは、私は、ベストプラクティスをすべきだと思う

NSArray* keys = [yourView.layer animationKeys]; 
+0

大変です。ありがとう! – Inferis

0

を呼び出し、ためのいくつかのアニメーションがあるすべてのキーを取得するために

[yourView.layer animationForKey:@"key"] 

を呼び出すことによって、それが重要なのです知っている特定のビューの層に接続されているすべてのアニメーションを取得することができます...

UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.7]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

.....your code 
// Set animation did stop selector before committing the animations 

[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 

[UIView commitAnimations]; 
関連する問題