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. 在java中使用正则表达式注意的地方

    1. 对^与$的理解 通常我们会通过类似Matcher matcher = Pattern.compile(regex).matcher(string);的代码去拿到一个Matcher对象.这种情况下 ...

  2. grep和sed替换文件中的字符串

    sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...

  3. DEDE5.7如何制作网站地图?

    DEDE用的人很多,可能大家在使用的过程中会碰到一些问 题,这很正常的,今天我们来讲讲DEDE5.7如何制作网站地图,其实网站地图分两种,一种做给网友看的,方便网友可以方便地找到自己想浏览的内容,另外 ...

  4. rsync 目录 斜杠

    源: 不带:同步  目录和内容 带/: 只同步内容 target目录: 待. -Warv --delete -W, --whole-file            copy files whole ( ...

  5. photoshop CS 调整选择区域的大小

    网上看到说:矩形选框不能直接调整大小,如果你不想重新画一个可以利用转换路径,然后再调整.这是不对的,矩形选框是可以调整大小的,使用"变换选区"即可.   对应步骤截图如下: 1.画 ...

  6. Mingyang.net:用注解校验数据

    注解校验依赖的是javax.validation和hibernate-validaton. <dependency> <groupId>javax.validation< ...

  7. POJ 2524

    并查集思想,初始化每个元素的根节点为本身. 求解目标是求解存在几个集合.解决方案:查看有多少个根节点,表现在记忆数组上就是有多少个元素的根是它本身. #include<stdio.h> # ...

  8. Node.js异常处理

    var log4js = require('log4js'); log4js.configure({ appenders: [ { type: 'console' }, { type: 'file', ...

  9. 《Code Complete》ch.24 重构

    WHAT? 重构(refactoring),Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. WHY? 神话:一个管理很完善的软件 ...

  10. iOS 7.0获取iphone UDID 【转】

    iOS 7.0 iOS 7中苹果再一次无情的封杀mac地址,使用之前的方法获取到的mac地址全部都变成了02:00:00:00:00:00.有问题总的解决啊,于是四处查资料,终于有了思路是否可以使用K ...