可以通过代码方法以及xib方法来自定义控件。
代码方法
1.自定义控件,一般需要新建一个类(继承自UIView)
2.在此类的.m中设置所需子控件的声明,作为属性;
3.在此类的.m中重写 initWithFrame:构造方法(当外面创建这个自定义控件时,方便使用)在此构造方法中添加子控件,并赋值给属性
4.提供(void)layoutSubviews:在其中布局子控件(设置尺寸)
注意:首先一定要调用[super layoutSubviews];(保留父类的一些东西)
5.为自定义控件设置数据
在.h中添加数据模型(此模型即这个自定义控件的内容)作为自定义控件的一个固有属性(此模型包含自定义控件中所有子控件的数据内容,当需要给自定义控件添加这些数据内容时,只需从外面为这个固有属性赋值一个模型对象即可)
在.m中实现这个固有属性的set方法,参数是一个模型对象。因此,只要传入一个模型,通过这个set方法就可以给自定义控件设数据。这个set方法的具体实现是,两个类之间对应成员变量的一一赋值。
PS:首先做一步赋值操作,如: _shop = shop;
xib方法
1.新建一个类(继承自UIView),作为自定义控件
2.创建xib文件:interface---View或Empty,名字最好与新类的名一样
3.在xib文件中,改变尺寸(freedom),去掉电池,拖动所需的子控件到其中,同时修改相关属性、布局
4.把xib与新建的类关联
5.在新类的.h中提供快速创建方法,并在.m中实现
自定义控件工作完成。
在外面就可以方便创建这个自定义控件的对象了(调用快速创建方法)
补充:当加载xib完毕之后,程序会跳到自定义控件的.m中的以下方法,所以,子控件的一些只需设置一次的属性可以在其中通过代码设置
在完成自定义控件后,一般还需要考虑自定义控件的数据接收:
在自定义控件的.h中提供所需的数据属性;在.m中的类扩展中拖到子控件(后面需要操作),然后提供并实现数据的set方法。
这样,外面就可以方便传入数据了。
自定义控件的使用
主要要做以下几点:
1.import
2.实例化自定义控件的对象
3.添加到父控件中
4.对添加进来的自定义控件进行布局
原则:自定义控件,一定要先还原系统原有的方法,再添加自己的方法