我有一个小的UIView,想让它先移动到屏幕的中心,然后,缩放到全屏。 但是当我开始像
这样的动画时[UIView beginAnimations:@"animation1" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(showDetailToFullscreen)];
self.currentDetailVC.frame = centerFrame;
[UIView commitAnimations];
在同一个控制器中,我有一个方法:showDetailToFullscreen
- (void)showDetailToFullscreen {
CGRect screenFrame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
[UIView beginAnimations:@"animation2" context:nil];
[UIView setAnimationDuration:0.5];
self.currentDetailVC.view.frame = screenFrame;
[UIView commitAnimations];
}
但是一开始,它仍然一起执行。 我认为他们仍然在同一个交易中的问题。但是我怎么能让这两个动画一个一个地执行呢?感谢任何答案!
答案 0 :(得分:3)
尝试使用此代替setAnimationDidStopSelector:
[self performSelector:@selector(showDetailToFullscreen) withObject:nil afterDelay:0.5];
答案 1 :(得分:3)
现在认为使用“块”方法制作视图会更好,这些方法可以在UIView Class Reference的“动画视图块”部分找到。
在大多数这些方法中,您可以指定一个“完成”代码块,可用于在第一个动画完成时启动第二个动画。您也可以在此完成块中调用showDetailToFullscreen
。
我建议改为尝试这种方法。
答案 2 :(得分:0)
您的目标是iOS 4或更高版本吗?如果是这样,我建议使用基于块的动画方法。你想做的事很容易:
来自UIView docs的示例:
[UIView animateWithDuration:0.2
animations:^{view.alpha = 0.0;}
completion:^(BOOL finished){ [view removeFromSuperview]; }];