本帖最后由 yuanlingqi 于 2014-11-13 21:25 编辑
今天参照例子写了个tomcat的小程序,感慨ios实现动画真的是太容易了。
实现思路:
1.主要是利用UIImageView的播放动画属性来完成播放动画。
2.每当点击一个动作按钮,通过事件获取点击动作的title,这样就知道需要播放哪个动作了;
3.通过title,从预存的NSDictionary里获取该图片的总张数;
4.然后根据title和图片数量,通过NSBundle获取到图片路径,将所有要播放的图片加载到一个可变数组;
5.最后将获取到的图片数组设置到UIImageView的动画属性里,调用播放方法,so easy!
- #import "CJPViewController.h"
- @interface CJPViewController (){
- NSDictionary *dic;
- }
- @end
- @implementation CJPViewController
- //初始加载方法
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- //tom.plist中存放每个表情图片的页数
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"];
- //读取dictionary中的数据
- dic = [NSDictionary dictionaryWithContentsOfFile:path];
- }
- - (IBAction)action:(UIButton *)sender {
- //获取图片名称
- NSString *title = [sender titleForState:UIControlStateNormal];
- //将图片名称和从字典中获取的相应图片的数量作为参数调用动画方法
- [self animate:title :[dic[title] intValue]];
- }
- -(void)animate:(NSString *)prefixName :(int)count{
- //若动画正在进行,则点击无效
- if ([_image isAnimating]) {
- return;
- }
- //声明可变数组,存放需要播放的图片
- NSMutableArray * images = [NSMutableArray array];
-
- //读取相应动作图片并放入数组
- for (int i=0; i<count; i++) {
- NSString *name = [NSString stringWithFormat:@"%@_%02d.jpg",prefixName,i];
- NSString *path = [[NSBundle mainBundle]pathForResource:name ofType:nil];
- //读取指定路径的图片
- UIImage *image = [[UIImage alloc]initWithContentsOfFile:path];
- //将图片放入数组
- [images addObject:image];
- }
- //设置图片播放次数
- [_image setAnimationRepeatCount:1];
- //设置每张图片的播放时间和需要播放的图片数量
- [_image setAnimationDuration:0.1*count];
- //设图片view的动画属性
- _image.animationImages = images;
- //开始播放图片
- [_image startAnimating];
- }
- @end
复制代码
|