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

什么是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值

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

时间: 2024-08-04 23:14:52

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

iOS开发UI基础—字典转模型(部分内容转载他人)

iOS开发UI基础-字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组来创建一个模型数组等等. 一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyrigh

iOS开发UI基础—xib的简单使用

iOS开发UI基础-xib的简单使用 一.简单介绍 xib和stotyboard的比较,一个轻量级一个重量级. 二.xib的简单使用 1.建立xib文件 建立的xib文件命名为appxib.xib 2.对xib进行设置 根据程序的需要,这里把view调整为自由布局 建立view模型(设置长宽等参数) 调整布局和内部的控件 完成后的单个view 3.使用xib文件的代码示例 YYViewController.m文件代码如下: 1 // 2 // YYViewController.m 3 // 10

iOS开发UI基础—简单的浏览器查看程序

iOS开发UI基础-简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件的对象,需要添加监听方法 左边按钮 右边按钮 二.实现基本功能的程序 1 // 2 // YYViewController.m 3 // 03-图片浏览器初步 4 // 5 // Created by apple on 14-5-21. 6 // Copyright (c) 2014年 itcas

iOS开发UI基础—从代码的逐步优化看MVC

iOS开发UI基础-从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他是否直接吃第五个,前面四个不用吃就饱了?) 1.完成基本要求的代码(使用了字典转模型和xib连线) (1)文件结构 (2)主要代码 字典转模型部分: YYappInfo.h头文件 1 // 2 // YYappInfo.h 3 // 12-视图改进(1) 4 // 5 // Created by

iOS开发UI基础—IOS开发中Xcode的一些使用技巧

iOS开发UI基础-IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示主窗口 cmd + 0             导航窗口 option + cmd + 0    工具窗口 在.m & .h之间切换           control + cmd + 上/下

ios开发UI基础—Kvc简单介绍

一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observer 键值观察.监听某一个模型的属性,只要模型属性的值一变化就通知你. 二.使用KVC 1.KVC基本使用介绍 (1)代码示例: 新建一个命令行项目,用以演示KVC的用法 完成之后为项目添加一个Person类. 为Person类添加两个属性(name和age),注意这两个属性的类型. 1 #import <Foundation/Fo

iOS开发UI基础—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

ios开发UI基础-使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片) 3.提供2个模型 数据模型:

ios开发UI基础—安装苹果官方文档和Xcode模拟器

ios开发UI基础-安装苹果官方文档和Xcode模拟器 提示:准备资料 (1)com.apple.adc.documentation.AppleiOS7.1.iOSLibrary.docset.zip (2)iPhoneSimulator6.1.sdk.zip 一.安装苹果官方文档 1.安装路径 文档有两个安装路径: (1)~/资源库/Developer/Xcode/UserData/ (2)/Applications/Xcode.app/Contents/Developer/Documenta

IOS开发UI基础—在UIImageView中添加按钮以及Tag的参数说明

ios开发UI基础-在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwithtag: 提示点:在xib中如果想要通过tag参数获取对应的控件(属性),不要把tag的参数设置为0,因为xib中所有的对象默认tag都为0,设置为0取不到对象. 二.ImageView中添加按钮(1)ImageView和Button的比较 Button按钮的内部可以放置多张图片(4),而Im