动画延迟按钮 - iPhone

时间:2010-10-13 17:04:59

标签: iphone animation uiviewanimation

我正试图让按钮移动到坐标,暂停,移动到另一个坐标,暂停,然后再次移动。然后,这个过程应无限重复。我现在所做的只是移动最后一步。

这是我到目前为止('mover'是UIButton名称):

- (void) firstAnimation {

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationDelay:5];
        [UIView setAnimationRepeatCount:-1];
        [UIView setAnimationRepeatAutoreverses:NO];

        CGPoint pos = mover.center;
        pos.y = 200.f;
        pos.x = 169.f;
        mover.center = pos;

        [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO];
        pos.y = 100.f;
        pos.x = 179.f;
        mover.center = pos;

        [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO];
        pos.y = 160.f;
        pos.x = 129.f;
        mover.center = pos;

        [UIView commitAnimations];

}

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

您不需要使用计时器,只需将动画委托设置为self并实现动画完成的方法。

请在此处查看我的回答:

animations on infinite loop

答案 1 :(得分:1)

如果你是专门为iOS4发货,我完全建议使用块和以下方法:

[UIView animateWithDuration:kAnimationDuration
                      delay:kAnimationDelay
                    options:UIViewAnimationCurveEaseInOut
                 animations:^ {
                     // your animations here.
                 }
                 completion:^(BOOL finished) {
                     // what you want to do upon animation completion here.
                 }];

请注意,在完成块中,您也可以定位另一个动画。实际上,您可以将三个动画块存储为块变量,然后将它们一个接一个地传递给上面的方法,直到第三个完成。然后重启过程!

街区是你的朋友。

答案 2 :(得分:0)

您最适合使用CoreAnimation keyframes并将repeatCount = HUGE_VALF设置为永久循环