0

我正在尝试使用以下代码制作带有图片的动画:

NSMutableArray *imageArray = [[NSMutableArray alloc] initWithCapacity:22];
int i;
for (i =1; i < 22; i++) {
    [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"fbAnimation%d.png", i]]];
    //make it animate
    self.fbLogin.animationImages = [NSArray arrayWithArray:imageArray];
    self.fbLogin.animationDuration =0.8;
    self.fbLogin.animationRepeatCount = 5;
    [self.fbLogin startAnimating];
}
    int j;
    NSMutableArray *imageLoading = [[NSMutableArray alloc] initWithCapacity:4];
    for (j = 1; j < 4; j++) {
        [imageLoading addObject:[UIImage imageNamed:[NSString stringWithFormat:@"loading%d.png", j]]];

        //make it animate
        self.fbLogin.animationImages = [NSArray arrayWithArray:imageLoading];
        self.fbLogin.animationDuration = 1;
        self.fbLogin.animationRepeatCount = 5;
        [self.fbLogin startAnimating];
}

}

问题是,到目前为止,无论哪种方式我都尝试过,只有一个动画会在屏幕上执行。我希望运行第一个动画,然后运行第二个“正在加载...”,直到来自 facebook 的所有其他数据都准备好。

4

1 回答 1

1

首先,每次循环每个循环时,您都在调用[self.fbLogin startAnimating]和重置数组。您应该将它们移到循环之外 - 您只需启动每个动画一次。其次,第二个 for 循环将在第一个之后立即执行,所以我期望的结果是第二个动画出现,而不是第一个。解决这个问题的一种方法是将第二个动画的代码放在一个单独的方法中,然后安排在第一个动画完成后调用它:animationImagesfor

[self performSelector:@selector(animation2) withObject:nil afterDelay:durationOfPreviousAnimation];

在第一个for循环结束时。我假设由于这是动画代码,我们保证在主线程上。

于 2013-02-17T01:41:28.403 回答