我有一个应用程序,其中电影视图是一种加载屏幕,它位于我的根控制器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];
我希望你们可以帮我解决这个问题,
提前致谢。
答案 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
(添加删除的视图)。