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.代码抽取
相同的代码直接方法中抽取,不同的通过参数传入

0 0