美文网首页
011:Xib的使用

011:Xib的使用

作者: 韩旭杰 | 来源:发表于2016-12-26 23:20 被阅读16次

Xib和storyboard的对比

  • 共同点:
  • 都用来描述软件界面
  • 都用Interface Builder工具来编辑
  • 本质都是转换成代码去创建控件
  • 不同点
  • Xib是轻量级的,用来描述局部的UI界面
  • Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

Xib的加载

  • 方法1:

NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"MJAppView" owner:nil options:nil];

这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中
(如果xib如右图所示,那么objs数组中依次会有3个对象:1个UIView、1个UIButton、1个UISwitch)

  • 方法2:

//bundle参数可以为nil,默认就是main bundle
UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];

在开发阶段,面向开发者的是xib文件; 当把应用装到手机上时,xib文件就会转为nib文件

Xib自定义View

  • 自定义控件类
  • 新建xib文件(文件名和自定义控件类相同)
  • xib关联类
  • 在自定义类中增加模型属性,在模型属性的set方法内设置数据给子控件

注意点

  • 一个控件有2种创建方式
  • 通过代码创建
  • 初始化时一定会调用initWithFrame:方法
  • 通过xib\storyboard创建
  • 初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
  • 初始化完毕后会调用awakeFromNib方法
  • 有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
  • 这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作

相关文章

网友评论

      本文标题:011:Xib的使用

      本文链接:https://www.haomeiwen.com/subject/yqjsvttx.html