- imageView的属性,isAnimating在这里用来当正执行;一个动画的时候,禁止开启其他动画.
- UIImage imageNamed这个方法加载的图片是有缓存的,它是把所有的图片先加载到内存中,再执行动画
- 优点是: 执行动画效率高,启动时间短.
- 缺点: 内存可能占用过大,造成程序闪退
- UIImage imageWithContentsOfFile 这种方式是通过加载图片的路径的方式加载图片.添加到可变数组的是图片的路径.在执行动画的时候是根据图片的路径来加载图片到内存中的.
- (void)beginAnimationWithImageCount:(int)count imageName:(NSString *)imageName {
// 如果当前的图片框正在执行一个动画, 那么不开启一个新的动画
if (self.imgView1.isAnimating) return;
// 1. 把要执行动画的图片设置UIImageView(图片框)
NSMutableArray *arrayM = [NSMutableArray array];
for (int i = 0; i < count; i++) {
NSString *imgName = [NSString stringWithFormat:@"%@%03d", imageName, i + 1];
// 通过+ imageNamed:这个方法加载的图片, 是有缓存的
// UIImage *img = [UIImage imageNamed:imgName];
// 没有缓存的加载图片的方式:
// 1》 确定图片的完整路径
NSString *img_path = [[NSBundle mainBundle] pathForResource:imgName ofType:@"png"];
// 2》通过调用imageWithContentsOfFile:方法来加载图片
UIImage *img = [UIImage imageWithContentsOfFile:img_path];
// 把图片对象添加到数组中
[arrayM addObject:img];
}
// 把要执行动画的图片设置给图片框
self.imgView1.animationImages = arrayM;
// 2. 设置动画的持续时间
self.imgView1.animationDuration = 0.1 * self.imgView1.animationImages.count;
// 3. 设置动画的重复次数
self.imgView1.animationRepeatCount = 1;
// 4. 启动动画
[self.imgView1 startAnimating];
// 清除图片内存
// self.imgView1.animationImages = nil;
// [self.imgView1 setAnimationImages:nil];
// 等待动画执行完毕后, 再清除内存
[self.imgView1 performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imgView1.animationDuration];
}