1.实现思路             

先说说我实现它的主要思路,很简单,主要利用UIImageView连续动画播放,和按钮的点击事件,就可以完成了这么一个简单的不会说话的汤姆猫。

2.实现细节             

2.1.加载本地字典里保存的本地图片名       

@property (weak, nonatomic) IBOutletUIImageView *tom;

NSDictionary *_dict; // 保存所有图片的个数

 // 1.获得tom.plist的全路径
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"]; // 2.根据文件路径加载字典
_dict = [NSDictionary dictionaryWithContentsOfFile:path];

2.2.抽取动画连续播放的方法出来         

1.有缓存(无法释放,参数传的是文件名)
[UIImage imageNamed:@""];

2.无缓存(用完就会释放,参数传的是全路径)
 [[UIImage alloc] initWithContentsOfFile:];

    // 1.创建可变数组
NSMutableArray *images = [NSMutableArray array]; // 2.添加图片
for (int i = ; i<count; i++) {
// 图片名
NSString *name = [NSString stringWithFormat:@"%@_%02d.jpg", filename, i];
// 全路径
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:nil]; // 加载图片(缓存)
// UIImage *img = [UIImage imageNamed:name];
// 没有缓存
UIImage *img = [[UIImage alloc] initWithContentsOfFile:path]; [images addObject:img];
} // 3.设置动画图片(有顺序)
_tom.animationImages = images;// 序列帧动画 // 4.只播放一次
_tom.animationRepeatCount = ; // 5.设置动画的持续时间
_tom.animationDuration = 0.1 * count; // 5.开始动画
[_tom startAnimating];

2.3.监听按钮的点击,实现图片的连续播放形成动画

 #pragma mark 监听所有的按钮点击
- (IBAction)btnClick:(UIButton *)sender {
// 1.如果tom正在播放动画,直接返回
if (_tom.isAnimating) return; // 2.取出按钮文字
NSString *title = [sender titleForState:UIControlStateNormal]; // 3.获得图片数量
int count = [_dict[title] intValue]; // 4.播放动画
[self playAnim:count filename:title];
}

作者: 清澈Saup
 出处:http://www.cnblogs.com/qingche/
 本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

iOS- 利用UIImageView自己整了个不会说话的汤姆猫的更多相关文章

  1. [iOS基础控件 - 3.4] 汤姆猫

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  2. 156 UIImageView 和 CADisplayLink 实现 Tom 汤姆猫动画效果的区别(扩展知识:分组(黄色文件夹)和文件夹引用(蓝色文件夹)区别)

    (1)UIImageView 的动画操作,来自定义循环播放动画(不建议使用,内存消耗大) (2)CADisplayLink 是一个计时器,但是同 NSTimer 不同的是,CADisplayLink ...

  3. IOS 汤姆猫核心代码

    // // MJViewController.m // 03-Tom // // Created by apple on 13-11-24. // Copyright (c) 2013年 itcast ...

  4. Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面

    Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面 关于欢迎界面 很多App第一次启动都会有一个欢迎界面,欢迎界面往往决定这用户对App的第一映像,所以欢 ...

  5. iOS利用Application Loader打包提交到App Store时遇到错误The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z ,a-z,0-9,dash,period,underscore,but the name cannot start w

    iOS利用Application Loader打包提交到App Store时遇到错误: The filename 未命名.ipa in the package contains an invalid ...

  6. UIView封装动画--iOS利用系统提供方法来做转场动画

    UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...

  7. UIView封装动画--iOS利用系统提供方法来做关键帧动画

    iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画 options:UIViewKeyframeAnimationOptions类型 */ [UIView animateKey ...

  8. UIView封装动画--iOS 利用系统提供方法来做弹性运动

    iOS 利用系统提供方法来做弹性运动 /*创建弹性动画 damping:阻尼,范围0-1,阻尼越接近于0,弹性效果越明显 velocity:弹性复位的速度 */ [UIView animateWith ...

  9. [iOS] 利用 NSAttributedString 进行富文本处理

    /iOS /[iOS] 利用 NSAttributedString 进行富文本处理 2016年4月4日 刘小龙 iOS 许多时候我们需要以各种灵活的形式展现文本信息,即富文本.普通的 text 属性显 ...

随机推荐

  1. linux操作系统的目录以及用户权权限的管理

    linux操作系统的目录以及对目录的操作 一: linux操作系统的目录结构   bin #可执行程序的安装目录 , 命令 boot #系统启动引导目录 dev #设备目录 etc #软件配置文件目录 ...

  2. 关于php中数字0与其他变量的相等判断

    在实践过程中,经常需要做`==`判断,有时候会把0当做false一样用,但是0和false在用来做比较的时候还是不一样的, false false==0 等于true false=='0' 等于tru ...

  3. Linux字符设备驱动--No.3

    字符驱动(按键)初始化函数分析: int charDrvInit(void) { devNum = MKDEV(reg_major, reg_minor); printk(KERN_EMERG&quo ...

  4. java 优化版 用接口实现(输入两个数选择实现加减乘除运算)

    //利用java接口实现计算器,实现加减乘除的功能 import java.util.Scanner; class Test { public static void main(String[] ar ...

  5. malloc、calloc、realloc函数说明

    malloc 函数 #include <stdlib.h> void* malloc(int n); n为要分配的字节数,如果成功,返回获得空间的首地址,如果分配失败,则返回NULL,ma ...

  6. NUCLEO-L053R8 TIM定时器 PWM输出

    TIM2 PWM输出测试 今天给大伙分享一个TIM2 PWM输出小实验. 实验开发板:Nucleo-L053R8,即STM32L053R8T6. 开发环境:MDK5 图1 - 工程界面 本次实验测试的 ...

  7. HttpClient的Content-Type设置

    HttpClient的Content-Type设置 最近在对接公司内容的一个云服务的时候,遇到一个问题,就是如果使用HttpClient如何设置post时候的Content-Type? public ...

  8. Jedis+Redis+spring缓存

    Redis程序使用它?Jedis 访问redis java api Redis-server & //后台运行防火墙要关闭 ts-parent的pom.xml加上jedis依赖 <dep ...

  9. JetBrains Makes its Products Free for Students(JetBrains 对学生免费了)

    只要你有大学有些 后缀是 .edu的  如:@buaa.edu.cn,用你的邮箱注册,就可以免费试用 JetBrains了 下面是详细注册步骤: Hello everyone, If you’re o ...

  10. 北京Uber优步司机奖励政策(1月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...