2015年07月01日第二天笔记
来源:互联网 发布:淘宝的我是卖家在哪里 编辑:程序博客网 时间:2024/04/30 07:32
昨天遗留
1.动态产生按钮赋给事先定义的属性,就可以全局使用它了
2015年07月01日08:19:12
1.整理电脑内存垃圾:cleanMyMac 软件
2.消化今天,预习 第3、4天 因为比较难
3.图片浏览器
4.汤姆猫
5.QQ登录
1)看要求,分析需要完成步骤
分析
1)控件可以全选,按方向键移动
2)Placeholder:设置默认文本
3)Keyboard style:只显示数字键盘
4)secure text entry:暗文设置
5)清空:设置文本框 是否显示清楚按钮 Clear Button
6)编辑前清空:clearButton 下的复选框
7)直接想代码文件拖控件,自动生成大致代码,可以同时设置传递的参数,一个就是当前控件
8)在代码中改已经连线的方法/属性名,会报错,这时要到UI界面,找到这个控件点击右键,删除不需要的连线方法【细节】 属性连线不明确的问题
9)连线相当于纯代码中,新建的变量赋给定义的属性值,连线就自动完成了这个事
10)readme.m文件:在项目中新建,不让它参数编译,选中项目看右边 B。。。P。。。3设置下 取消掉
11)NSLog里含有中文,可能到导致代码提示消失,可以最后写中文
12)判断文本框的值是否为空,可以用该值的长度是否等于0 来判断
13)老师增加了一个弹出框功能——跟踪看代码 两种方式
I>UIAlertView A,[A show];
II>UIAlertController B, [B ]
14)在IBAction里,择机返回:用 return;
15)用类方法创建对象的好处:同时设定一些对象参数
16)展示后作的事?
17)摧毁是红色的?
18)注意 IOS 版本特性 会影响 IPhone X 的兼容性
2015年07月01日09:20:26
transform 是button的属性
1)平移 动态修改控件基准线
2)Iphne6 屏幕 365
3)LABLE占整行
2015年07月01日11:25:15
1)用strong 可以在多个方法里使用这个属性变量
2)找放大镜替换
3)准备数据在viewdidload方法里
2015年07月01日14:36:31
1)自己创建的plist文件,放在support。。。里面,并且名字中不要带info
2)黑苹果里有个强制退出列表
3).git就是代码仓库
4)提交代码:source Controller — summit
5)文件结构后的问号?表示没有加入.git代码仓库里
6)使用字典存储数据是不专业的 因为key字符串容易写错,所以用更专业的model来存储,模型对应一个类,就是说专门创建一个类
2015年07月01日19:43:48
1.字典数据转换为模型数据分析
原因:
1)字典使用key来获取数据的,key是字符串,容易写错
2)使用key方法数据的时候,不会有代码提示
解决
1)首先创建一个模型类
2)确定属性,该属性和原字典关键字一样
3)声明和实现两个方法,用来初始化对象 1)类方法 2)对象方法
4)创建一个类方法A,用来加载数据并转化字典对象为模型对象 并存放在数组中,返回数组
ViewController应用
1)引入模型类头文件
2)定义数组属性,实现属性的getter方法
3)属性的getter方法:调用模型类的方法A获取数据 技巧:首先判断属性变量是否为空,为空再加载 (懒加载)
4)懒加载优点:1.无论在任何时候使用,都能够获得正确的数据 2.如果没有使用这个数据,那么就不会被加载内存中,从节省内存
2015年07月02日07:18:59
1.在View里看不同代码版本
2.%02d:如果整数不够2位就左位补上0
NSString *imageName = [NSString stringWIthFormat:@”drink_%02d”,i];
3.汤姆猫动画分析
事先想图片资源库导入图片资源
1)定义一个可变数组存放图片对象
2)利用图片资源的各个图片名初始化一个图片对象
3)加入数组
4)用数组设置动画图片
5)设置动画播放次数
6)设置动画播放时间:图片个数 * 单位时间
7)开始播放图片
2015年07月02日08:29:55
1.获取图片 内存优化问题
通过imageNamed:方法创建的图片,系统会默认对其进行缓存(加载内存中,不销毁它)
1)优点:访问速度快
2)缺点:占用内存一直不释放(容易导致程序闪退)
3)在images.xcassets文件夹下的图片,会压缩和加密成为一个Assets.car文件,这个文件中图片只能通过imageNamed:获得
4)如果是.jpg图片并且部署版本低于8.0那么这些图片,都不会被压缩和加密,但是.png是可以的.
UIImage *image = [UIImage imageNamed:imageFullName];
imageWithContentsOfFile:这个方法不会缓存图片,但是此时图片文件就不要放在images.xcassets文件夹下了;要放在Supporting Files下(添加选项:1;2.1;3.1)
UIImage *image = [UIImage imageWithContentsOfFile:path];
如果是.jpg的图片,且不在images.xcassets必须写后缀名称
5)*****OfFile:他需要使用绝对路径
6)取绝对路径
NSString *path = [[NSBundle mainBundle] pathForResource:文件名 ofType:文件扩展名];
具体实现代码
-(void) playAnimationWithImageName:(NSString *) imageName andImageCount:(int) count{ if(self.imageView.isAnimating)//判断动画是否还在继续 { return; } NSMutableArray *images = [NSMutableArray array]; for (int i=0; i<count; ++i) { NSString *imageFullName = [NSString stringWithFormat:@"%@_%02d",imageName,i]; // UIImage *image = [UIImage imageNamed:imageFullName];//会缓存数据,浪费内存 NSString *path = [[NSBundle mainBundle] pathForResource:imageFullName ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:path]; [images addObject:image]; } self.imageView.animationImages = images; self.imageView.animationRepeatCount = 1; self.imageView.animationDuration = count * 0.05; [self.imageView startAnimating]; //等动画播放完毕再清空图片 [self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration];}
2015年07月02日09:04:32
1.播放音频
1) 引入处理音频文件的头文件 #import
@property (nonatomic,assign) int index;2)next 方法实现-(IBAction)next{ self.index ++; self.indexLabel.text = [NSString stringWithFormat:@“%d/%d”,self.index,5]; switch(self.index){ case 1: self.imageView.iamge = [UIImage imageNamed:@“biaoqingdi”]; self.descLabel.text = @“在他面前,其他神马表情都弱爆了!”; break; case 2: self.imageView.image = [UIImage imageNamed:”wangba”]; self.descLabel.text = @“哥们为什么选8号呢”; break; } //控
制最后一张不可点击
if(self.index != 1) self.previousBtn.enabled = YES;
if(self.index == 5) self.nextBtn.enabled = NO;
}
3)Label控件 显示不全的问题
首先设置 参数面板的Lines为0,然后调整Label 大小
4)代码提取
按钮状态:self.previous.Btn.enabled = (self.index !=1);
5)用数组进行数据封装
首先定义一个数组,然后实现数组的getter方法对数据进行懒加载
@property (strong,nonatomic) NSArray *datas;-(NSArray *)datas{ if(_datas==nil){ NSDictionary *dict1 = @{@“icon”:@“biaoqingdi”,@“desc”,@“在他面前,其他神马表情都弱爆了”}; NSDictionary *dict2 = @{@“icon”:@“wamgba”,@“desc”:@“哥们为什么选8号呢”}; _datas = @[dict1,dict2]; } return _datas;}
最后修改change方法
-(void)change{ self.imageLabel.text = [NSString stringWithFormat:@“%d/%d”,sefl.index,self.datas.count]; NSDictionary *data = [self.datas[self.index-1]]; self.imageView.image = [UIImage imageNamed:data[@“icon”]]; self.descLabel.text =data[@“desc”]; self.previousBtn.enabled = (self.index !=1); self.nextBtn.enabled = (self.index != self.data.count);}
6)用plist封装数据
首先创建plist文件,添加数据
要往字典中添加数据要把它展开,点击+生成一条平级的数据
双击编辑内容
利用plist获取数据,并生成数组对象
-(NSArray *)datas{ if_datas == nil) { NSString *path = [[NSBundle mainBundle] pathForResource:@“imageData” ofType:@“plist”]; _datas = [NSAAray arranyWithContentsOfFile:path]; } return _datas;}
2015年07月02日11:20:30
汤姆猫分析2
1.要播放帧动画,不能用按钮,要用UIImageView控件对象
2.执行帧动画的三个步骤
1)提供播放帧动画所需要的图片.帧动画是多张图片构成的所以需要一个UIImage数组
2)要将这个UIImage的数组赋值给UIImageView的animationImages属性
3)开始执行动画
代码实现
-(IBAction)drink{//当一个方法有一个返回值,且没有形参的时候,是可以通过点语法经行调用的if(self.tomcatImage.isAnimating){return;}int imageCount = 80;NSMutableArray *images = [NSMutableArray arrayWithCapacity:imageCount];for(int i=0;i<imageCount;i++){NSString *imageName = [NSString stringWithFormat:@“drink_%02d”,i];UIImage *image = [UIImage imageNamed:imageName];[images addObject:image];}self.tomcatImageView.animationImages = images;self.tomcatImageView.animationDuration = imageCount *0.05;self.tomcatImageView.animationRepeatCount =1;[self.tomcatImageView startAnimating];}
3.代码抽取
相同的代码直接方法中抽取,不同的通过参数传入
- 2015年07月01日第二天笔记
- 2015年07月07日第六天笔记
- 2015年07月04日第四天笔记
- 2015年07月15日第10天笔记
- 2015年07月18日第11天笔记
- 2015年07月21日第12天笔记
- 2015年07月21日第13天笔记
- 2015年07月03日第三天笔记
- 2015年07月06日第五天笔记
- 2015年07月09日第七天笔记
- 2015年07月11日第八天笔记
- 2015年07月13日第九天笔记
- 2015年7月22日笔记
- 2015年7月24日笔记
- 2011年7月27日,大雨过后第二天
- 第二天学习php 2016年12月30日
- 2017年2月15日 第二天
- 2015年8月2日--第二三四天Oracle的sql文件
- HDU 3068 最长回文(manacher算法)
- 如何在Docker容器内外互相拷贝数据?
- POJ 1149 PIGS
- Linux Mint (应用软件— 下载工具:Transmission)
- win7 32位的4g内存可用内存只有2g到3g怎么解决?
- 2015年07月01日第二天笔记
- 股票学习32(公司财务分析03)
- 2015年07月03日第三天笔记
- Node:Trie数(字典树)
- 19-linux中一些命令
- 无线互联01
- 2015年07月04日第四天笔记
- hdu 1879 继续畅通工程
- 安静的转换有多安静?