1.创建自定义view的类文件

创建自定义view的类文件.png

2.创建一个xib文件来表述自定义view(也可以通过代码)

  • 创建一个xib文件
    创建一个xib文件.png

  • 设置xib文件名(xib文件名称和类文件保持一致)
    设置xib文件名.png

  • 编辑xib文件:(绑定class、添加子控件)也就是给自定义的view添加几个子控件这里我们添加了四个系统的控件(label、button、switch、textFiled)
    编辑xib文件.png

  • 声明一个类方法,快速创建一个自定义的view
    声明类方法.png

  • 实现类方法
    实现类方法.png

  • 创建一个自定义view(子控件)并添加到控制器的view(父控件)上面
    创建+添加自定义view.png

  • 问题:为什么viewDidLoad函数执行完毕后创建的customView对象没有销毁呢?
    :当您通过addSubview:方法将一个视图作为子视图添加时,父视图会对其进行保持操作。

  • 从控制器的view(父控件)上面移除自定义的view(子控件)
    移除自定义view.png

  • 调用removeFromSuperview方法,会自动将自定义view对象销毁.

  • 重写自定义view的dealloc方法,监听其销毁
    重写自定义view的dealloc.png

  • 官方对removeFromSuperview方法的说明:
    removeFromSuperview1.png
    removeFromSuperview2.png

调用顺序详细说明:

1.创建自定义view的时候

  • 创建自定义view
    创建自定义view.png

  • 重写didAddSubview:方法
    重写didAddSubview:.png

  • 调用顺序
    执行顺序.png

  • 备注: - didAddSubview:方法会按照自定义view内部的子控件循环调用

2.添加自定义view的时候

  • 添加自定义view
    添加自定义view.png

  • 重写相应的方法,监听其执行顺序
    重写添加时相应的方法.png

  • 调用顺序
    调用顺序1.png
    调用顺序2.png

3.从父控件移除自定义view(子控件)的时候

  • 移除自定义view
    移除自定义view.png

  • 重写相应的方法,监听其执行顺序
    执行顺序.png

  • 调用顺序
    调用顺序.png

  • 备注:- (void)willRemoveSubview:(UIView *)subview;会按照自定义view内部的子控件循环调用