2012-01-30 9 views
8

私はいくつかの奇妙な動作に気付きました。アニメーションを開始してビューを変更すると(ビューは閉じられません!)、完了ハンドラは決して呼び出されません。ビューが消えると、uiviewアニメーションの完了ブロックが呼び出されません

[UIView animateWithDuration:0.1f 
          delay:0.0f 
         options:UIViewAnimationCurveEaseOut 
        animations:^(void){ 
         [myView setHidden:YES]; 
         myLabel.alpha = 0.0f; 
         someOtherView.frame = CGRectMake(130, bubbleBigRect.origin.y, 61, 65); 
         [button setHidden:YES]; 
        } 
        completion:^(BOOL finished){ 
         NSLog(@"Complete %d",finished); 
         [imageVIew setImage:[UIImage imageNamed:@"myPng.png"]];      
        }]; 
} 

これには解決策がありますか?

答えて

-1

[myView setHidden:YES]へのコールをanimationsブロックからcompletionブロックに移動します。おそらくそれが役に立つと思う。 animationブロック中にアルファベットのmyViewを0に設定しておくことができます(フェードアウトしたい場合)。またはすぐにブロックを消したい場合は、-[UIView animateWithDuration:delay:options:animations:completion:]の全体コールの前に設定してください。

5

どこに書き込むのかわかりませんが、私と同じことがありますが、私の場合は完了ブロックが呼び出されることがあります。それは同じことかもしれない。
アニメーションブロックに何もアニメーションがない場合、たとえばアルファ= 0を設定した場合、アルファが既に0​​になっているか、UIScrollViewのコンテンツオフセットが同じコンテンツオフセットに設定されていることがわかりました。ケース)、完了ブロックは呼び出されません。

1

これをあなたのアニメーションブロックに入れて、完了したいことをYOUR_SELECTORメソッドに入れます。あなたは今あなたが望むものをあなたの視点で行い、完成時には何かを実行する方法を持つことができます!私はアニメーションたビュー私の場合

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(YOUR_SELECTOR)]; 
0

(0、-568320568)にそのフレームが設定されている、アニメーション後、私は、その必要な位置、すなわち(0,0,320,568)は完了ブロックにフレームを変更することを忘れ呼び出されていませんでした。アニメーション表示のフレームを変更すると、私の仕事ができました。たとえば、ビューに何も表示されていない場合(フレームが可視領域に設定されていないため)完了ブロックは呼び出されません。

関連する問題