Xib 和 storyboard 对比
2015-11-12 16:04
330 查看
Xib 和 storyboard 对比:
共同点:
* 都是用来描述软件界面
* 都用 Interface Builder工具来编译
* 本质都是转换成代码去创建控件
不同点:
* xib是轻量级的,用来描述局部的UI界面
*storyboard 是重量级的,用来描述整个软件的多个界面,并且能展示多个界面的跳转关系
xib的加载:
1、 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
2 、UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
使用xib自定义View的步骤:
* 封装xib的加载过程
注意点:
*一个控件有2种创建方式
通过代码创建
-初始化时一定会调用initWithFrame:方法
*通过xib\storyboard创建
-初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
-初始化完毕后会调用awakeFromNib方法
*有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作
共同点:
* 都是用来描述软件界面
* 都用 Interface Builder工具来编译
* 本质都是转换成代码去创建控件
不同点:
* xib是轻量级的,用来描述局部的UI界面
*storyboard 是重量级的,用来描述整个软件的多个界面,并且能展示多个界面的跳转关系
xib的加载:
1、 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
2 、UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
使用xib自定义View的步骤:
* 封装xib的加载过程
@interface ****View :UIView + (instancetype)**View; @end @implementation ****View +(instancetype)**View { return [[[ NSBundle mainBundle] loadNibNamed:@"****View" owner:nil options:nil] lastObject]; } @end
注意点:
*一个控件有2种创建方式
通过代码创建
-初始化时一定会调用initWithFrame:方法
*通过xib\storyboard创建
-初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
-初始化完毕后会调用awakeFromNib方法
*有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作
相关文章推荐
- Jsoup:解决java.net.UnknownHostException的问题
- js-Higher-base.js
- js-MediumGrade-base.js
- lintcode:Coins in a Line 硬币排成线
- 推荐一些Geek的工具和网站~
- 如何修改Tomcat的默认主页为你自己项目的主页
- lamda (java 8) 表达式
- 疯狂Java程序员16堂课---第8课:异常捕捉的陷
- Dorado+Spring+Mybatis配置
- 删除NSString的最后一个字符
- dubbo管理控制台
- ASCII码表
- Http协议详解(转)
- js-QuickStart-base.js
- Mongodb笔记之(Java中操作Mongodb)
- kaptcha 验证码使用
- 在EditText中设置hint的大小和颜色,光标粗细和颜色...(二)
- java类型信息—class对象
- TEST_F与TEST
- dfs(深度优先算法)搜索基础