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 已经在屏幕上时,就会发生这种情况。

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

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

我希望你们能帮助我解决这个问题,

提前致谢。

4

2 回答 2

1

UIView 动画无法动画化从超级视图中移除,但您可以例如将其 alpha 动画化为零,然后您可以执行此操作以在动画完成后移除视图。

[UIView setAnimationDidStopSelector:@selector(removeMyView)];


- (void) removeMyView
{

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

尽管MDT 说了什么,您实际上可以使用 UIView 动画为视图的移除设置动画。您只需使用 iOS 4 中引入的基于块的 API。

这是Apples 文档中的确切示例代码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 回答