2012-03-11 10 views
4

私は2つのアニメーションを実行しています。検索バーとショーバナーを表示します。これらのアニメーションは同じビューのサイズを変更していますが、同時に実行している場合は最新のアニメーションによってサイズ変更がキャンセルされます。 UIViewが現在アニメーション化されていてアニメーションのために待機しているかどうかを確認するにはどうしますか?UIViewが現在アニメーション化されているか確認してください。

私はCAAnimationsを使用していないと確信しています.Cocoaはこのようなクラスを検出していないためです。

広告を受信したときに実行されています。残念ながら、これはShowSearchが実行されているのと同じ時期です。あなたはそれを入力しながら、あなたのコードを選択し、制御 + Kを押すと

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView { 
    if (!hasloaded) { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
     [UIView setAnimationDuration: 1.0]; 

     [bannerView_ setFrame:CGRectMake(0, self.view.frame.size.height, bannerView_.frame.size.width, bannerView_.frame.size.height)]; 

     // move and grow 
     [bannerView_ setFrame:CGRectMake(0, self.view.frame.size.height-50, bannerView_.frame.size.width, bannerView_.frame.size.height)]; 
     // set original position 
     [UIT setFrame:CGRectMake(UIT.frame.origin.x, UIT.frame.origin.y, UIT.frame.size.width, UIT.frame.size.height)]; 

     // move and grow 
     [UIT setFrame:CGRectMake(UIT.frame.origin.x, UIT.frame.origin.y, UIT.frame.size.width, UIT.frame.size.height-50)]; 

     [UIView commitAnimations]; 
     hasloaded = true; 
    } 
} 
+0

' - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)終了コンテキスト:(void *)' – Hedam

答えて

2

あなたは(私はあなたが何をしたいのか、これをされて推測している?)チェーン複数のアニメーションに(beginAnimations/commitAnimationsに、より現代的な選択肢である)UIView方法+animateWithDuration:animations:completion:に完了ブロックを使用することができます。

+0

いいえ、他のアニメーションが'while(UIView.isAnimating == YES){// WAIT}' – Hedam

+0

アニメーションの実行中に何もしたくない場合、完了したら何かをやり始めますか?なぜ完成ブロックを使用しないのですか?私はその違いを実際には見ない。 – omz

+1

私はそれが存在していることは知らなかった。 – Hedam

0

、あなたは書式設定を維持し、それはかなりになります。それを試してみてください。コードを貼り付けることで作られたテキストの壁を真の非カラーフォーマット環境に読み込みます。

Nick Weaver says:

A UIViewの層(CALayerの)を有します。アニメーションキーを送信すると、レイヤーにアタッチされているアニメーションを識別するキーの配列が表示されます。エントリがあれば、アニメーションが実行されていると思います。 CALayerが採用するCAMediaTimingプロトコルをもっと深く掘り下げたい場合は、現在のアニメーションに関するさらに詳しい情報があります。

関連する問題