在动画之前已经删除了superview

时间:2012-06-18 17:10:08

标签: xcode ipad uiview core-animation

我有一个应用程序,其中电影视图是一种加载屏幕,它位于我的根控制器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已经在屏幕上时,就会发生这种情况。

我正在使用此代码将mpmctr放在委托方法中的视图上.diffinishlaunching。

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

我希望你们可以帮我解决这个问题,

提前致谢。

2 个答案:

答案 0 :(得分:1)

UIView动画无法动画从superview中移除,但您可以将其alpha动画设置为零,然后您可以在动画完成后删除视图。

[UIView setAnimationDidStopSelector:@selector(removeMyView)];


- (void) removeMyView
{

    [mpMCtr.view removeFromSuperview];
}

答案 1 :(得分:1)

尽管有MDT says,你实际上可以使用UIView动画动画删除视图。您只需使用iOS 4中引入的基于块的API。

这是Apples documentation for transitionWithView:duration:options:animations:completion:

中的确切示例代码
[UIView transitionWithView:containerView
                  duration:0.2
                  options:UIViewAnimationOptionTransitionFlipFromLeft
                  animations:^{
                      [fromView removeFromSuperview];
                      [containerView addSubview:toView]; }
                  completion:NULL];

它将从左侧翻转,删除fromView并将toView添加到containerView(添加删除的视图)。