1

私はアニメーションの問題に直面しています。

だから今、私のアプリには、閉じるボタンのあるサブビューがあります。閉じるボタンを押すと、前のビューを示す下向きのアニメーションが発生します。それは正常に機能しています。このように NSNotificationCenter に通知を渡すことで、カール ダウン クロージング アニメーションを実行します。[[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:self];

ここで、閉じるボタン自体にアニメーションを適用して、閉じるボタンを押すとアニメーションが実行され、カール ダウン アニメーションが発生するようにしたいと考えました。だから私がそれを行う方法は、次のコードによるものです

[UIView transitionWithView:self.view.superview duration:1
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^ {
                        closeButton.frame = CGRectMake(500, 15, 100, 40); }
                    completion:nil];

以前は closeButton.frame の値が (580,15,100,40) だったので、アニメーションは画像が右から左に 580 から 500 に移動するようになります。

コードを実行すると、閉じるボタンを押すと、閉じるボタンのアニメーションは発生しませんが、カールダウンのアニメーションが発生します。したがって、通知を投稿するコードをコメントアウトしたときのテストでは、閉じるボタンのアニメーションは完全に機能しますが、下向きのアニメーションは発生せず、前のビューも表示されません (ビューに通知を送信しないため)近い)。

ここで何が問題なのか、なぜ 2 つのアニメーションが同時に発生しないのかを知りたいです。

4

1 に答える 1

0

これが私がそれを解決した方法です...

ブロックを使用してネストされたアニメーションを使用し、閉じるボタンのアニメーションの完了部分にカールダウンクローズビューのコードを含めました...

[UIView transitionWithView:self.view.superview duration:1
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^ {
                        popContents.closeButton.frame = CGRectMake(500, 15, 100, 40); }
                    completion:^(BOOL finished){
                        [UIView transitionWithView:self.view.superview duration:1
                                           options:UIViewAnimationOptionTransitionCurlDown
                                        animations:^ {
                                            popContents = nil;
                                            [popContents.view removeFromSuperview];
                                            [ovController.view removeFromSuperview];
                                            ovController = nil; }
                                        completion:nil];
                    }];
于 2011-05-25T14:54:52.107 に答える