0

ムービービューが一種のロード画面であり、ルートコントローラーであるsplitViewControllerの上にあるアプリがあります。映画が終わったら、アニメーションでスーパービューから削除したいと思います。私は今このコードを使用しています。ここで、mpmctrは私のムービーコントローラーです。

[UIView beginAnimations:@"blablablab" context:NULL];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:splitViewController.view.superview cache:NO];
[UIView setAnimationDuration:.5];
[mpMCtr.view removeFromSuperview];
[UIView commitAnimations];

このコードが実行されると、mpmctrはスーパービューから自分自身を削除しますが、アニメーション化されません。これは、splitviewcontrollerがすでに画面に表示されているときに発生します。

デリゲートメソッドdidfinishlaunchingのビューにmpmctrを配置するためにこのコードを使用しています。

[window addSubview:splitViewController.view];
[splitViewController.view addSubview:mpMCtr.view];

皆さんがこの問題で私を助けてくれることを願っています、

前もって感謝します。

4

2 に答える 2

1

UIViewアニメーションは、スーパービューからの削除をアニメーション化することはできませんが、たとえば、アルファをゼロまでアニメーション化して、アニメーションの完了後にビューを削除することができます。

[UIView setAnimationDidStopSelector:@selector(removeMyView)];


- (void) removeMyView
{

    [mpMCtr.view removeFromSuperview];
}
于 2012-06-18T17:25:44.437 に答える
1

MDTの説明にも関わらず、UIViewアニメーションを使用してビューの削除を実際にアニメーション化できます。iOS4で導入されたブロックベースのAPIを使用する必要があります。

これは、 Appleのドキュメントからの正確なサンプルコードです。transitionWithView:duration:options:animations:completion:

[UIView transitionWithView:containerView
                  duration:0.2
                  options:UIViewAnimationOptionTransitionFlipFromLeft
                  animations:^{
                      [fromView removeFromSuperview];
                      [containerView addSubview:toView]; }
                  completion:NULL];

左から反転し、削除fromViewして追加toViewcontainerViewます(追加されたビューが削除されます)。

于 2012-06-18T19:50:06.860 に答える