首页 > 移动平台 > 详细

IOS开发UI基础之Plis文件-字典转模型

时间:2015-07-11 06:36:19      阅读:316      评论:0      收藏:0      [点我收藏+]

什么是plist文件?

在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低

因此,可以考虑将经常变的数据放在?文件中进?行存储,程序启动后从?文件中 读取最新的数据。如果要变动数据,直接修改数据?文件即可,不?用修改代码 

一般可以使?用属性列表?文件存储NSArray或者NSDictionary之类的数据,这 种“属性列表?文件”的扩展名是plist,因此也称为“plist?文件

在Xcode创建plist文件的步骤:

技术分享

解析plist文件

技术分享

plist文件的解析过程

技术分享

plist的使用注意:

plist的文件名不能叫做 “info” 、“Info” 之类的

添加plist等文件资源的时候 也就是你将一个文件拖到项目中的时候 一定要勾选下面的选项:

技术分享

 

通过上面的讲解 相信你已经知道了 我们从plist解析出来的是一个字典 当我们要获取数据的时候 就可以直接使用字典中的key 去获取value

但是使用字典是由一定的缺陷的 :

? 般情况下,设置数据和取出数据都使?用“字符串类型的key”,编写这些key时,编辑器没有智能提?示,需要?手敲

dict[@"name"] = @"Jack";
NSString *name = dict[@"name"];
  • ?  ?手敲字符串key,key容易写错

  • ?  Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据 ● 使?用模型的好处

  • 所谓模型,其实就是数据模型,专门?用来存放数据的对象,?用它来表?示数据会更加专业
  • 模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
  • 使?用模型访问属性时,编译器会提供?一系列的提?示,提?高编码效率

如何字典转模型?

字典转模型的过程

技术分享

字典转模型的操作最好封装在模型内部

模型应该提供?一个可以传?入字典参数的构造?方法

一般模型中都会提供这样两个构造方法

技术分享
 

instancetype

● instancetype 在类型表?示上,跟id?一样,可以表?示任何对象类型
● instancetype只能?用在返回值类型上,不能像id?一样?用在参数类型上
● instancetype?比id多?一个好处:编译器会检测instancetype的真实类型

 

类前缀

  •        使?用Objective-C开发iOS程序时,最好在每个类名前?面加?一个前缀,?用来标识这个类的“?老家”在哪
  •       ?目的是防?止N个?人开发了?一样的类,冲突了
  •       ?比如Jake Will、Kate Room在同?一个项?目中都各?自开发了个Button类,这样的程序是不能运?行起来的
  •      解决?方案:Jake Will的类名叫做JWButton,Kate Room的类名叫做KRButton
 

View的封装

如果?一个view内部的?子控件?比较多,?一般会考虑?自定义?一个view,把它内部

?子控件的创建屏蔽起来,不让外界关?心

 外界可以传?入对应的模型数据给view,view拿到模型数据后给内部的?子控件 设置对应的数据

 封装控件的基本步骤

 在initWithFrame:?方法中添加?子控件,提供便利构造?方法

 在layoutSubviews?方法中设置?子控件的frame(?一定要调?用super的 layoutSubviews)

增加模型属性,在模型属性set?方法中设置数据到?子控件上

技术分享 

Xib和storyboard对?

共同点:

 

  •   都?用来描述软件界?面

 

 

  •  都?用Interface Builder?工具来编辑
  • 本质都是转换成代码去创建控件

不同点:

  • Xib是轻量级的,?用来描述局部的UI界?面
  • Storyboard是重量级的,?用来描述整个软件的多个界?面,并且能展?示多个界?面之间的跳 转关系

XIB加载的两种方式:

技术分享

使?用xib?自定义view的步骤

  • 新建一个自定义的控件类

技术分享

  • 新建xib文件 (文件名减一和view的类名一致)

技术分享

  • 修改xib中view的类名

技术分享

  • 封装xib的加载过程

技术分享

  • 增加模型属性 在模型属性set方法中设置数据到子控件上面

注意点:

一个控件有2种创建?方式

● 通过代码创建
- 初始化时?一定会调?用initWithFrame:?方法

● 通过xib\storyboard创建
- 初始化时不会调?用initWithFrame:?方法,只会调?用initWithCoder:?方法 - 初始化完毕后会调?用awakeFromNib?方法

● 有时候希望在控件初始化时做?一些初始化操作,?比如添加?子控件、设置基本属性

● 这时需要根据控件的创建?方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个?方法中操作

 UIImage 简单介绍

一个UIImage对象代表一张图片 一般通过imageNamed:方法就可以通过文件名加载项目中的图片

如:

技术分享

UILabel的基本设置

技术分享

技术分享

UIFont  代表字体 常见的创建方法有以下几个

技术分享

UIButton、UIImageView、UILabel的选择

特点

UIButton
- 既能显?示?文字,又能显?示图?片(能显?示2张图?片,背景图?片、内容图?片) - 长按?高亮的时候可以切换图?片\?文字
- 直接通过addTarget...?方法监听点击

 UIImageView
- 能显?示图?片,不能直接通过addTarget...?方法监听点击

 UILabel
- 能显?示?文字,不能直接通过addTarget...?方法监听点击

选择

仅仅是显?示数据,不需要点击 建议选择UIImageView、UILabel

不仅显?示数据,还需要监听点击
建议选择UIButton 其实UIImageView、UILabel也可以通过?手势识别器来监听(后?面课程会学)

长按控件后,会改变显?示的内容 不?用考虑了,选择UIButton(因为UIButton有highlighted这种状态)

同时显?示2张图?片:背景图?片、内容图?片 不?用考虑了,选择UIButton

 

常用的Xcode插件推荐:http://www.cocoachina.com/industry/20130918/7022.html

如何获得APP内部资源

  • 安装一个iTools 百度一下就有
  • 用USB连接设备 打开iTools
  • 然后选择一个应用

技术分享

 

 补充知识:

## 定时任务
- 方法1:performSelector


// 1.5s后自动调用self的hideHUD方法
[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];

- 方法2:GCD


dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 1.5s后自动执行这个block里面的代码
    self.hud.alpha = 0.0;
});

- 方法3:NSTimer


// 1.5s后自动调用self的hideHUD方法
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
// repeats如果为YES,意味着每隔1.5s都会调用一次self的hidHUD方法

HUD

  •    - 其他说法:指示器、遮盖、蒙板
  •     - 半透明HUD的做法
  •     - 背景色设置为半透明颜色

 常见问题

- 项目里面的某个.m文件无法使用
    - 检查:Build Phases -> Compile Sources
- 项目里面的某个资源文件(比如plist、音频等)无法使用
    - 检查:Build Phases -> Copy Bundle Resources

模型

 什么是模型?  

  •   - 专门用来存放数据的对象
  •     - 一般都是一些直接继承自NSObject的纯对象
  •     - 内部会提供一些属性来存放数据

一个控件看不见有哪些可能?

  • - 宽度或者高度其实为0
  • - 位置不对(比如是个负数或者超大的数,已经超出屏幕)
  • - hidden == YES
  • - alpha <= 0.01
  • - 没有设置背景色、没有设置内容
  • - 可能是文字颜色和背景色一样

九宫格计算思路

  • - 利用控件的索引index计算出控件所在的行号和列号
  • - 利用列号计算控件的x值
  • - 利用行号计算控件的y值

本文就分享到这里了  感谢你的阅读!

IOS开发UI基础之Plis文件-字典转模型

原文:http://www.cnblogs.com/syios/p/4637816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!