1、效果演示
2、主体代码说明:
SAViewControler.m- //
- // SAViewController.m
- // TomCat
- //
- // Created by yusian on 14-3-27.
- // Copyright (c) 2014年 yusian. All rights reserved.
- //
- #import "SAViewController.h"
- @interface SAViewController ()
- {
- NSDictionary *_animation;
- }
- @end
- @implementation SAViewController
- // view加载完成后会自动调用一次该方法
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
-
- // 获得tom.plist文件的路径
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"];
-
- // 创建一个字典用来存储plist文件中的内容,key:图片文件夹名称及对应的value:图片数
- // 图片名 = 图片文件夹名+序号 = 按钮title = 字典key
- _animation = [NSDictionary dictionaryWithContentsOfFile:path];
-
- }
- // 点击事件处理,以下代码经过重构处理,所有的点击事件都由该一个方法处理,通过按钮title区分点击事件的来源
- - (IBAction)btnClick:(UIButton *)sender {
- // 加层判断,如果动画正在播放则直接返回,说明暂时不执行任何操作
- if (self.image.isAnimating) return;
-
- // 取出所点击按钮的title字段值
- NSString *title = [sender titleForState:UIControlStateNormal];
-
- // 创建一个数组用来存储UIImage对象
- NSMutableArray *images = [[NSMutableArray alloc] init];
-
- // 开始循环,每次循环长度都等于每个动画所包含的图片数,通过循环将UIImage存入到images数组中
- for (int i = 0; i < [_animation[title] integerValue]; i++) {
-
- // 通过按钮传进来的titel,间接取到了每个按钮对应的动画及动画对应的所有图片
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *imagePath = [bundle pathForResource:[NSString stringWithFormat:@"%@_%02d.jpg", title, i] ofType:nil];
-
- // 将取出来的图片一张一张加入到image数组中
- [images addObject:[UIImage imageWithContentsOfFile:imagePath]];
- }
-
- // UIImage的animationImages方法可以通过赋值的图片,自动将图片按顺序更换(即逐帧动画,类似旧式电影播放原理)
- self.image.animationImages = images;
-
- // 动画重复次数
- self.image.animationRepeatCount = 1;
-
- // 动画时长,最佳时间为根据图片数目而定,根据人眼视觉暂留特性,最佳频率是0.12秒一帧(旧式电影更换胶片频率)
- self.image.animationDuration = 0.12 * images.count;
-
- // 一切就绪,开始动画
- [self.image startAnimating];;
-
- }
- @end
复制代码 3、源代码参考下载:游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
基础参考链接:ios实战开发之UISegmentedControl
|