我尝试使用此代码制作带有图片的动画:
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的所有其他数据都准备就绪。
答案 0 :(得分:1)
首先,每次绕过每个[self.fbLogin startAnimating]
循环时,您正在调用animationImages
并重置for
数组。你应该将它们移到循环之外 - 你只需要开始一次动画。
其次,第二个for循环将在第一个之后立即执行,因此我期望的结果是第二个动画出现,而不是第一个。
解决问题的一种方法是将第二个动画的代码放在一个单独的方法中,然后安排在第一个动画完成后通过调用来调用它:
[self performSelector:@selector(animation2) withObject:nil afterDelay:durationOfPreviousAnimation];
在第一个for
循环结束时。我假设因为这是动画代码,所以我们保证在主线程上。