• [ IOS ] iOS-控制器View的创建和生命周期


    reference to  : 

    1. 控制器View的创建

    首先我们来看一下控制器view创建的流程图


    控制器view加载.jpeg


    从图中我们可以看出,在控制器view加载过程中有两个重要的方法loadView和viewDidLoad。下面我们来重点了解一下这两个方法。

    loadView方法
    作用:loadView方法是用来负责创建UIViewController的view。首先判断下有没有指定storyboard或者xib,如果指定,就会加载它们描述的控制器的view,如果没有指定,创建一个空的view。
    什么时候调用:每次访问UIViewController的view,当view为nil,就会调用loadView方法。
    
    viewDidLoad
    作用:一般我们会在这里做界面上的初始化操作,比如往view中添加一些子视图等。
    什么时候调用:每当view创建完毕的时候,最终都会调用viewDidLoad方法。

    其次,在view创建过程中还有一些需要注意的地方。

    1: 通过storyboard创建的控制器,或者通过xib创建的控制器的view,系统会帮我们加载控制器的view,具体内部实现可以看iOS-UIWindow详解,在此不在赘述
    2:  ViewController *vc = [[ViewController alloc]init];
    底层也会调用-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil方法。
    (1).判断下有没有指定nibName,如果指定了,就会去加载指定的xib
    (2).如果没有指定,就会判断下有没有跟控制器类名同名的xib,有,就会去加载
    (3).判断下有没有跟控制器类名同名的xib,但是后缀不带Controller的xib,如果有,就会去加载
    (4).如果没有任何xib描述控制器的view,就不会加载xib。会创建一个颜色为clearColor的view。

    2. 控制器View的生命周期

    控制器View的生命周期方法

    loadView: 加载view
    viewDidLoad: view加载完毕
    viewWillAppear: 控制器的view将要显示
    viewWillLayoutSubviews: 控制器的view将要布局子控件
    viewDidLayoutSubviews: 控制器的view布局子控件完成
    viewDidAppear: 控制器的view完全显示
    viewWillDisappear: 控制器的view即将消失的时候
    viewDidDisappear: 控制器的view完全消失的时候
    

     view生命周期方法调用顺序

    viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear
    

    3. 控制器View的延迟加载

    控制器的view是延迟加载的:创建控制器并不一定会创建控制器的view,等用到时再加载.

  • 相关阅读:
    qt程序编译错误:could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’
    安装 yaml-cpp,MP4V2
    安装cmake 和 opencv 4.0.0
    windows系统,boost编译安装
    messageQ 消息队列
    fflush 和 fsync 的区别
    开源一个 PDF 小工具集软件【使用 PDFium 库实现】
    封装 libjpeg 库
    纯 C++ 代码实现的 INI 文件读写类
    C++11 —— 使用 thread 实现线程池
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/6898817.html
Copyright © 2020-2023  润新知