功能分析
点击对应的按钮后,让汤姆猫展现对应的动画

步骤分析
1、搭建UI界面
2、监听按钮点击
3、根据点击的按钮执行对应的动画

知识点:
1、UIImageView帧动画的使用
2、UIImage的2种加载方式
3、重复代码的封装抽取
4、文档注释的写法

UIImageView帧动画相关属性和方法
@property(nonatomic,copy) NSArray *animationImages;
需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)
@property(nonatomic) NSTimeInterval animationDuration;
帧动画的持续时间
@property(nonatomic) NSInteger animationRepeatCount;
帧动画的执行次数(默认是无限循环)
- (void)startAnimating;
开始执行帧动画
- (void)stopAnimating;
停止执行帧动画
- (BOOL)isAnimating;
是否正在执行帧动画

UIImage的2种加载方式
方式一:有缓存(图片所占用的内存会一直停留在程序中)
+ (UIImage )imageNamed:(NSString )name;
name是图片的文件名

方式二:无缓存(图片所占用的内存会在一些特定操作后被清除)
+ (UIImage )imageWithContentsOfFile:(NSString )path
- (id)initWithContentsOfFile:(NSString *)path;
path是图片的全路径
方式二对于内存更优化

重复代码的封装抽取:
1、当一份代码重复出现在程序的多处地方,就会造成程序又臭又长,当这份代码的结构要修改时,每一处出现这份代码的地方都得修改,导致程序的扩展性很差
2、因此,要将重复出现的代码抽取到某个方法中,在需要这份代码的地方调用方法即可

抽取代码的思路
1.将相同的代码放到一个方法中
2。将不同的值当做方法参数传进来

代码简摘:(不拖控件,使用纯代码大家界面)

#import "HMViewController.h"@interface HMViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *tom;@end@implementation HMViewController
/**重构代码:1、将重复的代码复制到新方法中2、根据需要调整方法关于图像实例化UIImage  UIImageViewimageName: 系统推荐使用,但是图像实例化之后的释放由系统负责如果要自己释放图片不能使用imageName方法!UIImage *image = [UIImage imageNamed:imageName];取而代之的方法:[UIImage imageWithContentsOfFile:<#(NSString *)#>]注意:一遇到ContentsOfFile则必须使用全路径!!提示:如果放在Images.xcassets 中的图片(存放经常使用的图片),不能使用imageWithContentsOfFile:临时使用的大图片放在Supporting Files*/
-(void)tomAnimationWithName:(NSString *)name count:(NSInteger)count{//判断是否在动画if([self.tom isAnimating]) return;//动画图片数组NSMutableArray *imageArray = [NSMutableArray array];int i;for (i = 0 ; i< count ; i++) {NSString *imageName = [NSString stringWithFormat:@"%@_%02d.jpg",name,i];//UIImage *image = [UIImage imageNamed:imageName];NSString *path = [[NSBundle mainBundle] pathForResource:imageName ofType:nil];UIImage *image = [UIImage imageWithContentsOfFile:path];[imageArray addObject:image];}//设置动画数组self.tom.animationImages = imageArray;//重复一次self.tom.animationRepeatCount = 1;//动画时长self.tom.animationDuration = self.tom.animationImages.count * 0.075;//开始动画[self.tom startAnimating];//    //点击事件结束以后释放数组
//    self.tom.animationImages = nil;[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];}//currentTitle 可以去除按钮当前标题文字
-(IBAction)tomAction:(UIButton *)button{[self tomAnimationWithName:button.currentTitle count:button.tag];
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

运行结果截图:

iOS-汤姆猫项目总结相关推荐

  1. 【成长记录】iOS小程序-不会说话的汤姆猫

    做一个不会说话的汤姆猫,原理其实很简单,只是把连续的帧动画连续起来播放,但是在Xcode中实现起来很简单,不像是安卓那么复杂,只是Xcode中的方法封装的很实用很简单. 先看看,慢慢说起来~~~ 其实 ...

  2. 汤姆猫信使: 折翼的信使

    相信不少用户的手机中都养了不少汤姆猫吧,从会说话的汤姆猫到汤姆的情书再到近日发布的汤姆猫信使,你的手机中恐怕又得新养一只了,不过这只猫的动作太单调,只会说个话什么的,说实话有点坑爹: 应用名称:汤姆的 ...

  3. 会说话的好朋友:汤姆猫开发商Outfit7旗下应用盘点

    还记得那只会说话的汤姆猫吗?它就像一个口袋里的好朋友和开心果,给大家带来了很多快乐.在汤姆猫大获成功后,其开发公司Outfit7又陆续推出了"会说话的好朋友"系列,这些趣味盎然的游 ...

  4. 汤姆猫的安装、使用。

    先要提供jdk-7u9-linux-x64.rpm(如以上版本) 安装jdk(java需要用到的编译开发工具) [root@libincla ~]# rpm -vih jdk-7u9-linux-x6 ...

  5. 从0到1使用汤姆猫(tomcat)和servlet实现登录和注册

    从0到1使用汤姆猫(tomcat)和servlet实现登录和注册 --Javee 注:这里使用的编辑器是idea 这里我之前创建了一个空的项目,所以直接点解添加模块即可: 这里选择Java EE的we ...

  6. java程序填空题输出汤姆猫_Java学习之手写Tomcat“迷你汤姆猫”

    之前学习Java EE的时候,做的项目都是部署在Tomcat上面,配置web.xml(小毛驴),然后启动Tomcat,通过浏览器输入URL去访问,当时其实真的不懂好多东西,尤其是不懂request.和 ...

  7. java输出动物,求大神帮助输出为什么只有动物名,几条腿,怎么叫,没有汤姆猫叫等...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package test; abstract class Animal{ String name; public Animal(String n){nam ...

  8. 教教你如何配置汤姆猫 和 Java 环境变量的设置

    我们先学习下如何设置 汤姆猫的环境变量吧! JDK环境变量配置:      如果你的JDK安装在C盘里,如:C:\Program Files\Java\jdk1.6.0_05,那么就在系统变量里(当然 ...

  9. 日活四千万的汤姆猫游戏家族,用AWS云服务打造“无感”用户体验

    2020年7月,"会说话的汤姆猫"首款赛车类游戏<汤姆猫飞车>上线公测.它保持了汤姆猫游戏家族一贯的Q萌风格,赛道上一路都有萌宠陪伴,引领玩家进入奇妙的赛车世界.&qu ...

  10. OC:不会说话的汤姆猫(2014年12月)未添加音频

    代码下载地址:http://download.csdn.net/detail/ytuzhangziyao/8313977 1.第一种方法 /* 不会说话的汤姆猫 1.图片名放在button的title ...

最新文章

  1. 2020上半年收集到的优质AI文章 – 计算机视觉
  2. pyspider爬虫学习-文档翻译-About-Projects.md
  3. OSX unable to write 'random state'
  4. Java Web 学习与总结(一)Servlet基础
  5. ajax 实时进度_如何做好项目进度管理
  6. 罗永浩今年有点难,“老人与海”发布会新品到底是啥?
  7. 让MySQL支持InnoDB
  8. mac 2k显示器字体发虚_亲身实践:Mac mini 搭配戴尔显示器体验
  9. Django part 6 ---Static File
  10. 采购计算机申请,采购申请报告格式
  11. 关于Pytorch中detach
  12. 【历史上的今天】6 月 3 日:微软推出必应搜索引擎;Larry Roberts 启动阿帕网;Visual Basic 之父出生
  13. 智能客服搭建(1) - MRCP Server 搭建
  14. 虽焦虑迷惘,仍选择自由职业,只因……
  15. 爬虫07 爬取阿里旅行特价机票
  16. 用Python写了一个网易云音乐(附源码、视频教程)
  17. 记一次网络风暴/网络环路
  18. 【架构师技能篇】Worker初识
  19. android新闻客户端实验报告,Android 新闻客户端学习笔记
  20. Java找工作的准备点

热门文章

  1. [PTA]实验10-1 圆形体体积计算器
  2. C语言实现数组的旋转
  3. Onblur的点击事件
  4. png jpg android,PNG vs JPG,用于在Android应用程序中显示图片(而非图标)
  5. Erlang NIF简析
  6. 张文顺先生去世 郭德纲率德云社全体戴孝
  7. SpringBoot35-分布式系统开发-spring cloud1
  8. LAZARUS——DEFI破局之路
  9. 【SQL学习历程】3.39道SQL经典例题
  10. 【C语言程序】体育老师按照学生身高编号,老师刚好排好编号,一位中等个子的男孩临时加入排列,因此老师将他排在第8号位置并重新排序他后面同学的编号。输出学生的编号。