一、使用纯代码方式
- initWithFrame:中添加子控件
- layoutSubViews中设置子控件的fame
- 对外设置数据接口,重写setter方法给子控件设置数据显示
- 在的viewController里面使用init/initWithFrame:方法创建自定义类,并且给自定义类的frame赋值
- 对自定义类对外暴露的数据接口进行赋值
二、使用xib方式
- 创建xib,在xib中拖入需要添加的控件并设置好尺寸,这个xib的Class要设置为我们定义的类
- 通过IBOutlet的方式,将xib中的控件与自定义类进行关联
- 对外设置数据接口,重写setter方法给子控件设置显示数据
- 在viewController类里面加载xib文件就可以得到对应的类,这里不需要再设置自定义类的frame,因为xib已经有了整个view的大小,只需要设置位置,
- 对类对外暴露的数据接口赋值
注意:
如果使用代码方式创建控件,那么创建时一定会调用initWithFrame:方法
如果使用xib/stotyboard方式创建控件,那么在创建时一定会调用initWithCoder:方法
在initWithCoder:里面访问属性,会发现属性为nil,因为此时自定义好控件正在初始化,属性还没赋值。很多操作都在initWithCoder:后进行。
建议在awakeFromNib方法中进行初始化的额外操作,因为awakeFromNib是在初始化完成后调用的,所以在这个方法里访问属性就可以保证不为nil。