这是我的代码
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
if ([sender tag] == 1) {
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:placeholder cache:YES];
}
else {
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
}
if (view1OnTop) {
[view1 removeFromSuperview];
[placeholder addSubview:view2];
}
else {
[view2 removeFromSuperview];
[placeholder addSubview:view1];
}
[UIView commitAnimations];
view1OnTop = !view1OnTop;
我希望不断翻转视图,比如持续1分钟。
它应该不断翻转。我该怎么做。 我想要的是,我想要一个视图,它应该在一段特定的时间内不断翻转。 我怎么能实现这个目标? 问候
答案 0 :(得分:1)
除了我假设您正在使用的翻转动画之外,您需要在当前动画完成时启动新动画。
在[UIView commitAnimations]之前,执行以下操作:
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDone:finished:context:)];
添加功能
-(void)animationDone:(NSString*)id finished:(NSNumber*)n context:(void*)context
让下一轮开火。
编辑:您可以通过输入代码来触发动画来执行此操作,因此从[UIView beginAnimations...]
到[UIView commitAnimations]
的典型块。当然,更好的解决方案是将动画起始代码放在一个单独的函数中,因此大纲将如下所示:
...
[self startAnimationLoop];
...
-(void)startAnimationLoop
{
[UIView beginAnimtions...];
// do the animation stuff
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDone:finished:context:)];
[UIView commitAnimations];
}
-(void)animationDone:(NSString*)id finished:(NSNumber*)n context:(void*)context
{
[self startAnimationLoop];
}
使它前后移动,添加一些状态变量,或者创建两组这些函数,它们相互调用(startAnimationLoop1
和startAnimationLoop2
,每个函数在完成时触发另一个)