不断翻转视图

时间:2010-07-15 07:22:07

标签: iphone core-animation

这是我的代码

[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分钟。

它应该不断翻转。

我该怎么做。 我想要的是,我想要一个视图,它应该在一段特定的时间内不断翻转。 我怎么能实现这个目标? 问候

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];
}

使它前后移动,添加一些状态变量,或者创建两组这些函数,它们相互调用(startAnimationLoop1startAnimationLoop2,每个函数在完成时触发另一个)