标签:
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; // 定义字典读取plist文件 @property (nonatomic, strong) NSDictionary *imageCountDict; @end @implementation ViewController // 懒加载, 重写get方法 - (NSDictionary *)imageCountDict { if (nil == _imageCountDict) { // 获得plist的路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"tom" ofType:@"plist"]; // 读取plist中的数据 _imageCountDict = [NSDictionary dictionaryWithContentsOfFile:path]; } return _imageCountDict; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } // 点击头部按钮 - (IBAction)didClickKnock:(id)sender { [self startAnimationWith:@"knockout"]; } // 点击喝牛奶 - (IBAction)didClickDrink:(id)sender { [self startAnimationWith:@"drink"]; } // 点击放屁 - (IBAction)didClickFart:(id)sender { [self startAnimationWith:@"fart"]; } // 相同的代码放到一个方法里, 不同的变成参数 - (void)startAnimationWith:(NSString *)imageName { // 通过字典中的key 取得value也就是对应的image的数量 NSString *countString = [self.imageCountDict objectForKey:imageName]; // 转换为NSInteger NSInteger count = countString.integerValue; // 判断是否正在执行帧动画, 如果正在执行, 则return,就是,后面的代码不会再执行了 if (self.imageView.isAnimating) { return; } // 1. 执行帧动画需要一个数组(数组元素都是image对象) NSMutableArray *imageArray = [NSMutableArray array]; // 添加图片 for (int i = 0; i < count; i++) { // 拼接image 名称 NSString *tempImageName = [NSString stringWithFormat:@"%@_%02d.jpg",imageName,i]; // 实例化image 对象 // 如果使用imageNamed: 这个方法实例化图片, 会把实例化过的图片给缓存起来, 如果下次再去使用, 就不会再重新实例化 // UIImage *image = [UIImage imageNamed:imageNmae]; NSString *path = [[NSBundle mainBundle] pathForResource:tempImageName ofType:nil]; // 通过这种方式去加载图片的时候, 不会有缓存 UIImage *image = [UIImage imageWithContentsOfFile: path]; // 添加到数组 [imageArray addObject:image]; } // 把装满image对象的数组赋值给imageView self.imageView.animationImages = imageArray; // 2. 间隔的时间 self.imageView.animationDuration = 3; // 3. 重复次数 self.imageView.animationRepeatCount = 1; // 4. 开始动画 [self.imageView startAnimating]; // //释放内存 // [self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration + 1]; }
标签:
原文地址:http://www.cnblogs.com/DoNib-Coding/p/4780716.html