ViewController.h文件中:

 @interface ViewController : UIViewController

 @property (weak, nonatomic) IBOutlet UIImageView *tomImg;
- (IBAction)btnClick:(UIButton *)sender; @end

ViewController.m文件中:

#import "ViewController.h"

@interface ViewController ()
{
NSDictionary *_dicPicResoure; // 记录图片分组的个数
} @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; // 获取tom.plist的全路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"tom" ofType:@"plist"]; // 根据文件路径加载字典
_dicPicResoure = [NSDictionary dictionaryWithContentsOfFile:path];
} - (IBAction)btnClick:(UIButton *)sender { // 如果正在播放,直接返回
if (_tomImg.isAnimating) {
return;
} // 取出按钮文字
NSString *prefixName = [sender titleForState:UIControlStateNormal]; // 获取图片数量
int count = [_dicPicResoure[prefixName] intValue]; // 调用播放动画方法
[self playWithPicCount:count andPrefixName:prefixName];
} - (void)playWithPicCount:(int)count andPrefixName:(NSString *)name
{
// 创建可变数组 存储图片对象
NSMutableArray *aryImg = [NSMutableArray array]; // 添加图片
for (int i = ; i < count; ++i) {
NSString *picName = [NSString stringWithFormat:@"%@_d.jpg", name, i]; // 加载数据(缓存)
// UIImage *img = [UIImage imageNamed:picName]; NSString *path = [[NSBundle mainBundle] pathForResource:picName ofType:nil];
UIImage *img = [UIImage imageWithContentsOfFile:path]; [aryImg addObject:img];
} // 设置动画图片(有顺序)
_tomImg.animationImages = aryImg; // 只播放一次
_tomImg.animationRepeatCount = ; // 设置动画的持续时间
_tomImg.animationDuration = 0.1 * count; // 开始动画
[_tomImg startAnimating];
}
@end

实现思路:

1)资源图片存放按类型分文件夹存放,并按播放顺序用编号进行命名。例如:表示生气的第一帧图片名格式:angry\angry_00.jpg
2)使用plist文件存储图片的文件夹名称以及该文件夹下的图片个数。例如:angry 26


3)UIButton的标题跟图片文件夹名称一致,例如表示生气的按钮,按钮标题设置为“angry”。并且标题的颜色设置为无。
4)用UIImageView来播放一组连续的图片

UIImageView与UIButton的简单区别:
1.显示图片
  1)UIImageView只能显示一种图片(图片默认会填充整个UIImageView) image\setImage
  2)UIButton能显示2种图片:
  *背景 (背景会填充整个UIButton) setBackgroundImage:forState:
  *前景 (覆盖在背景上面的图片,按照之前的尺寸显示) setImage:forState:
  *还能显示文字(当即需要显示文件、又需要显示图片时,一般用UIButton)

2.点击事件
  1)UIImageView默认是不能响应点击事件
  2)UIButton能响应点击事件:addTarget:action:forControlEvents:

3.使用场合
  1)UIImageView:只显示图片,不监听点击,点击图片后不做任何反应
  2)UIButton:既显示图片,又监听点击

4.继承结构
  1)UIButton之所以能添加监听器来监听事件,是因为它继承自UIControl
  2)UIImageView之所以不能添加监听器来监听事件,是因为仅仅继承自UIView

图片加载方式:

1、缓存加载,无法释放,参数传的是文件名

UIImage *img = [UIImage imageNamed:@"图片名"];

2、无缓存加载,用完就会释放,参数传的是全路径

UIImage *img = [UIImage imageWithContentsOfFile:@"图片全路径"];

查看内存占用率工具:

product->profile->Allocations

界面效果图:

05-Tom猫(UIImageView的简单运用)的更多相关文章

  1. iOS开发基础-序列帧动画之Tom猫

    新建一个Single View Application,向该工程中导入Tom猫的图片资源,本示例演示Tom猫喝牛奶的动作.图片的名字为 drink_00.jpg.drink_01.jpg.....dr ...

  2. ios的UIImage的两种不同的图片加载方式 tom猫

    在ios的UI交互设计时,对图片的处理是难免的:不同的处理方式会对内存有不同的影响: ********************************************************* ...

  3. 猫学习IOS(四)UI半小时就搞定Tom猫

    阿土 首先对影响 下载项目的源材料: Tom猫游戏代码iOS 素材http://blog.csdn.net/u013357243/article/details/44457357 效果图 以前风靡一时 ...

  4. 软件测试工程师人手必备的一只:TOM猫,可以带你装逼带你飞!

    Hi,你来了? 其实没有猫,为了让你们好好学习,天天向上!我可真的是拼了命了! 写这篇文章的缘由是,近期有同学经常问到一个这样的问题: 老师,tomcat是啥? 老师,Linux是啥? 老师,xshe ...

  5. AJ学IOS(04)UI之半小时搞定Tom猫

    AJ分享 必须精品  效果图 曾经风靡一时的tom猫其实制作起来那是叫一个相当的easy啊 功能全部实现,(关键是素材,没有素材的可以加我微信) 新手也可以很快的完成tom这个很拉轰的ios应用哦 然 ...

  6. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

  7. iOS开发-Tom猫

    // //  ViewController.m //  20-tom猫 // //  Created by hongqiangli on 2017/8/1. //  Copyright © 李洪强. ...

  8. JS理论-:一只tom猫告诉你构造函数 实例 实例原型 实例原型的实例原型是什么

    参考地址:https://github.com/mqyqingfeng/Blog/issues/2 感谢这位大佬 下面说说我的理解: 第一,看下人物: tom--一只叫tom的猫 Cat()--猫的构 ...

  9. 2018.10.05 NOIP模拟 阶乘(简单数论)

    传送门 签到题. 直接把所有数先质因数分解. 同时统计每一个在阶乘中会出现的质数出现的最少次数. 然后对于每一个这样的质数,我们求出满足其出现质数的m的最小值,然后求出所有m的最大值. 求m的时候可以 ...

随机推荐

  1. C#命名空间“Microsoft.Office”中不存在类型或命名空间名称的终极解决方法

    源地址:http://blog.csdn.net/zhu2695/article/details/41852267

  2. ASP isPostBack

    源地址:http://blog.163.com/budong_weimin_zh/blog/static/129198524201061995455589/ ASP.NET中IsPostBack详解 ...

  3. 一步步教你如何把电脑设置U盘启动(图解教程)

    一.我们先来说说如何进入 BIOS设置程序: 在开机时按下特定的热键可以进入BIOS设置程序,不同类型的机器进入BIOS设置程序的按键不同,有的在屏幕上给出提示,有的不给出提示,几种常见的BIOS设置 ...

  4. 20145305 《Java程序设计》第6周学习总结

    教材学习内容总结 1.输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStream实例 2.InputStream与OutputStream ...

  5. redis命令(转)

    http://redis.readthedocs.org/en/latest/index.html 连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 sa ...

  6. [Flex] Accordion系列-Header的运用

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  7. JAVA中集合类的使用

    总的说来常用的集合类有两大类:Collection 和 Map 1) Collection接口有List和Set两大类子接口,List有ArrayList.LinkedList.Vector子类,Se ...

  8. String Format for DateTime

    This example shows how to format DateTime using String.Format method. All formatting can be done als ...

  9. iOS 进入后台的处理

    当App进入后台时(按下Home键), App会被系统暂停, 所有的程序逻辑都会停止, App还是驻留内存中, 除非被用户强制退出, 或者被系统kill掉(为了保证正在前台运行的App有足够的内存, ...

  10. Qt编译安装后中文无法显示问题

    闲的蛋疼,把Ubuntu删了,再装10.04的时候,QT编译后运行自己的程序已经不能显示中文了,只能显示英文,字体贼丑... 想了各种办法,都没解决.. 最后:终于搞定: apt-get instal ...