AJ分享 必须精品 

效果图

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




然后呢你需要准备这些素材。。。

拖拽控件吧,因为这一个项目用到的不是很多,用代码写太累了,得不偿失,大家有兴趣的可以自己谢谢纯代码做ui的练习哦不会的可以参考我的前面一篇

拖拽控件,那些东西呢 看图片吧

就是这些东西,那个名字的地方在代码中又妙用
另外UIButton的tag属性也被添加了奇妙的数字

下面上代码

代码

  1. //调用button监听方法
  2. -(IBAction)tomAction:(UIButton *)button{
  3. [self tomAnimationWithName:button.currentTitle count:button.tag];
  4. }
  5. //让tom猫动起来,name是要执行动作的名字 count是图片的个数
  6. -(void) tomAnimationWithName:(NSString *) name count:(NSInteger) count
  7. {
  8. //如果动画正在播放就返回不执行
  9. if (self.tom.isAnimating) {
  10. return;
  11. }
  12. //序列帧动画 播放一组图片
  13. //指定动画图片的数组
  14. NSMutableArray *arrayM = [NSMutableArray array];
  15. //添加动画播放的素材
  16. for (int i = 0; i<count; i++) {
  17. NSString *imageName = [NSString stringWithFormat:@"%@_%02d.jpg",name,i];
  18. // UIImage *image = [UIImage imageNamed:imageName];
  19. // 得到全路径名字
  20. NSString *path = [[NSBundle mainBundle] pathForResource:imageName ofType:nil];
  21. UIImage *image = [UIImage imageWithContentsOfFile:path];
  22. arrayM[i] = image;
  23. };
  24. //把操作好的UIImage图片放到UIImageView的animationImages当中 把图片数组放Tom控件中
  25. self.tom.animationImages = arrayM;
  26. //设置执行一次
  27. [self.tom setAnimationRepeatCount:1];
  28. //设置执行时间
  29. self.tom.animationDuration = arrayM.count * 0.075;
  30. //开始执行动画
  31. [self.tom startAnimating];
  32. //结束动画后,清理动画数组
  33. [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];
  34. }

这里就是我们要用到的代码了,记得要给弄好的代码前面的圈圈连到ui上面,否则点不点都没用的
你敢相信吗,tom猫就这么几行代码就完成了,不到一个屏幕,大多数还是注释。

说说应该注意的地方吧
这里面内存管理特别重要,我们并没有用ios建议 我们用的
[UIImage imageNamed:name];
而是用了:
[UIImage imageWithContentsOfFile:path];
因为这样我们可以更完美的释放内存
内存在ios中相当重要,客户体验一直是苹果提醒的(据说android5.0还是5.1又漏了。。。其实安卓真的不错,我没有黑android的意思哦,只是希望android能更加茁壮的成长,更加完善。)

重构_图像的实例化

重构–抽取代码
方法:
1> 将重复代码复制到新的方法中
2> 根据需要调整参数

关于图像的实例化

imageNamed:系统推荐使用的,但是图像实例化之后的释放由系统负责
如果要自己释放图片,不能使用imageNamed方法!

而需要使用imageWithContentsOfFile

提示:如果放在Images.xcassets中的图片,不能使用imageWithContentsOfFile
Images.xcassets中不要 存放大的,不常用的图片

AJ学IOS(04)UI之半小时搞定Tom猫的更多相关文章

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

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

  2. [转] Java程序员学C#基本语法两个小时搞定(对比学习)

    Java程序员学C#基本语法两个小时搞定(对比学习)   对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. ...

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

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

  4. Java程序员学C#基本语法两个小时搞定(对比学习)

    对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import ...

  5. BS开发平台,一小时搞定功能强大的统计分析页面

    BS开发平台,一小时搞定功能强大的统计分析页面,拥有强大的功能和详细的权限控制. 1.组织数据,分析需求(实际耗时大约20分钟)  2.建立需要的业务数据表(大致10分钟)3. 运行代码工具,生产需要 ...

  6. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

  7. AJ学IOS(28)UI之Quartz2D简单介绍

    AJ分享,必须精品 iOS开发UI篇—Quartz2D简单介绍 什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : ...

  8. AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引

    AJ分享,必须精品 先看效果图 代码 ViewController #import "NYViewController.h" #import "NYCarGroup.h& ...

  9. AJ学IOS(41)UI之核心动画 两行代码搞定3D转场

    AJ分享,必须精品 效果: 代码: 其实代码很少,苹果都给封装好了 // 1.创建核心动画 CATransition *ca = [CATransition animation]; // 1.1动画过 ...

随机推荐

  1. 大数据软件安装之Azkaban(任务调度)

    一.安装部署 1.安装前准备 1)下载地址:http://azkaban.github.io/downloads.html 2)将Azkaban Web服务器.Azkaban执行服务器.Azkaban ...

  2. Centos7配置IP地址和DNS

    目录 一.查看IP地址 1.ifconfig命令 2.ip addr命令 二.配置网卡 1.动态IP地址 2.静态IP地址 3.重启网卡 三.注意事项 四.本地虚拟机设置静态IP后不能上网的解决方法 ...

  3. 【docker Elasticsearch】Rest风格的分布式开源搜索和分析引擎Elasticsearch初体验

    概述: Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,这是通常没有预料到的. 它存在还因为原始数据如果只是躺在磁 ...

  4. laravel中间件的创建思路分析

    网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用array_reduce函数的? 本文从自己的角度出发,模拟了如果我是作者,我是怎么实现这个中间件 ...

  5. cookie sessionStorage localStorage 使用小结

    1.cookie 随http 一起发送 2.webStorage 客户端本地存储功能 可以在客户端 本地建立 一个数据库 不参与与服务器的通讯 setItem (key, value)   —— 保存 ...

  6. GitLab → 搭建中常遇的问题与日常维护

    开心一刻 隔壁有一个80多岁的老大爷,昨天在小区的一棵树下发现一条黑色的蛇,冻僵了,大爷善心大发,就把蛇揣在了怀里,想给它一点温暖. 今天一大早看到大爷在树上挂了一个牌子,写到:不准随地大小便! 搭建 ...

  7. 医学图像 | 使用深度学习实现乳腺癌分类(附python演练)

    乳腺癌是全球第二常见的女性癌症.2012年,它占所有新癌症病例的12%,占所有女性癌症病例的25%. 当乳腺细胞生长失控时,乳腺癌就开始了.这些细胞通常形成一个肿瘤,通常可以在x光片上直接看到或感觉到 ...

  8. ClickHouse学习系列之一【安装说明】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.按照习惯第一步先安装,本文对其用户权限管理方面进行梳理说明 ...

  9. 负载均衡器nginx和ribbon区别

    1,nginx 是服务器端的负载均衡器,所有请求发送到nginx之后,nginx通过反向代理的功能分发到不同的服务器,做负载均衡 2,ribbon是客户端的负载均衡器,他是通过将eureka注册中心上 ...

  10. GCDAsyncSocket 笔记

    https://www.dzliving.com/2019/03/26/gcdasyncsocket-%E7%9A%84%E5%B0%81%E8%A3%85%E4%B8%8E%E4%BD%BF%E7% ...