重复beginAnimations - 所有动画

时间:2011-03-13 05:52:57

标签: iphone uiview uiimageview

我通过淡入淡出4个不同的图像制作一个简单的图像旋转器。它很有效,直到最后,我想重复所有四个动画。

我尝试过重复计数,但这只适用于那个特定的动画。如何创建整个循环?

我的代码如下。提前谢谢!

[UIView beginAnimations:nil context:nil];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:slideshow cache:YES];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:3];
    [UIView setAnimationRepeatAutoreverses:YES];

    [UIView setAnimationDelay:3];
    imageOne.alpha = 0;
    imageTwo.alpha = 1;

    [UIView setAnimationDelay:6];
    imageTwo.alpha = 0;
    imageThree.alpha = 1;

    [UIView setAnimationDelay:9];
    imageThree.alpha = 0;
    imageFour.alpha = 1;

    [UIView commitAnimations];

1 个答案:

答案 0 :(得分:2)

您可以首先为动画添加名称,而不是beginAnimations:nil,而是放置beginAnimations: @"Button Animations"或类似内容。此外,您应该将动画的委托设置为self。这可以通过在动画块中添加以下代码行来完成:

 [UIView setAnimationDelegate: self];

然后,您可以将整个动画块放入它自己的类方法中(在视图控制器中)。让我们称之为doAnimation。这只是为了安全措施。接下来你应该做的是在视图控制器中实现这个委托函数:

 -(void) animationDidStop: (NSString *) animationID finished:(NSNumber *)finished context:(void *)context{

    if([animationID isEqualToString:@"Button Animation"]){
         [self doAnimation];
    }
 }

因此,这将确保您的动画重复。如果这种方法不起作用,请告诉我,我没有测试过。但我认为它会起作用。