两个图片循环在彼此之后 - c

时间:2013-02-16 18:13:30

标签: objective-c animation loops

我尝试使用此代码制作带有图片的动画:

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的所有其他数据都准备就绪。

1 个答案:

答案 0 :(得分:1)

首先,每次绕过每个[self.fbLogin startAnimating]循环时,您正在调用animationImages并重置for数组。你应该将它们移到循环之外 - 你只需要开始一次动画。 其次,第二个for循环将在第一个之后立即执行,因此我期望的结果是第二个动画出现,而不是第一个。 解决问题的一种方法是将第二个动画的代码放在一个单独的方法中,然后安排在第一个动画完成后通过调用来调用它:

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

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