每个周期后延迟的按钮图像数组动画

3

我正在制作一个简单的动画,其中有10个按钮。当我点击其中一个按钮(例如第5个),所有按钮都应该逐个开始动画,但它们同时进行动画。请告诉我可以做什么或......谢谢。

    NSMutableArray* imagesArray = [[NSMutableArray alloc] init];
for (int images = 0; images < 15; images++) {

    UIImage* buttonImage = [UIImage imageNamed:[NSString stringWithFormat:@"aaqqq00%02d.png", images]];
    [imagesArray addObject:buttonImage];
}

NSArray* reversedAnim = [[imagesArray reverseObjectEnumerator] allObjects];

int buttonTag = button.tag;

for (int images = 1; images <= 10; images++) {
    UIButton *animButton = (UIButton *)[self.view viewWithTag:images];
    if (images <= buttonTag) {
        animButton.imageView.animationImages = imagesArray;
        [animButton setImage:
         [UIImage imageNamed:@"aaqqq0014.png"] forState:UIControlStateNormal];
        animButton.adjustsImageWhenHighlighted = NO;
        animButton.imageView.animationDuration = 1; //whatever you want (in seconds)
        animButton.imageView.animationRepeatCount = 1;
        [animButton.imageView startAnimating];
    } else {

        if (currentButtonTag_ >= images) {
            animButton.imageView.animationImages = reversedAnim;
            [animButton setImage:
             [UIImage imageNamed:@"aaqqq0000.png"] forState:UIControlStateNormal];
            animButton.adjustsImageWhenHighlighted = NO;
            animButton.imageView.animationDuration = 0.2; //whatever you want (in seconds)
            animButton.imageView.animationRepeatCount = 1;
            [animButton.imageView startAnimating];
        }
    }
}
2个回答

0
在循环中迭代时,有一个变量来保存所需的延迟时间,并在每次循环结束时将其增加。我们称之为delay
现在,不要调用:
[animButton.imageView startAnimating];

做这个:
[animButton.imageView performSelector:@selector(startAnimating) withObject:nil afterDelay:delay];

每个按钮都会在累积的延迟后开始动画。


我已经做了那个,但是在延迟后它们仍然同时动画 :( - Retro
你是在每次循环迭代中更改延迟时间吗? - Wain
我将延迟设置为常量,我应该增加它吗? - Retro
是的,否则,正如您所看到的,它们仍将同时开始。您的问题说您希望它们每个都在不同的时间开始。因此,延迟需要逐渐增加。 - Wain

0

你需要给出一些延迟时间和持续时间。

[UIView animateWithDuration:0.6
                          delay:2.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{S1Button.frame = CGRectMake(20, 10, 50, 10);S1buttonA.alpha = 0;}
                     completion:nil];

为每个动画设置此项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接