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,等用到时再加载.

[ IOS ] iOS-控制器View的创建和生命周期的更多相关文章

  1. iOS viewController 和 view 的创建消失生命周期总结

    控制器创建的生命周期 1. 如果从stroryBoard 中产生一个controller,那么会先调用initWithCoder:, awakeFromNib, loadView,viewDidLoa ...

  2. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  3. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  4. View和viewController的生命周期

    View和viewController的生命周期 一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,View ...

  5. Unity 3D Framework Designing(3)——构建View和ViewModel的生命周期

    > 对于一个View而言,本质上是一个MonoBehaviour.它本身就具备生命周期这个概念,比如,Awake,Start,Update,OnDestory等.这些是非常好的方法,可以让开发者 ...

  6. Unity应用架构设计(3)——构建View和ViewModel的生命周期

    对于一个View而言,本质上是一个MonoBehaviour.它本身就具备生命周期这个概念,比如,Awake,Start,Update,OnDestory等.这些是非常好的方法,可以让开发者在各个阶段 ...

  7. IOS 控制器View的创建方式(方式的优先级 、view的延迟加载)

    MJViewController的view的创建 的方式的优先级 控制器view的延迟加载 ● 控制器的view是延迟加载的:用到时再加载 ● 可以用isViewLoaded方法判断一个UIViewC ...

  8. iOS view和viewController的生命周期

    一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,ViewController总是在需要的时候才加载视图,并 ...

  9. iOS程序执行顺序和UIViewController 的生命周期(整理)

    说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序 ...

随机推荐

  1. day5模块学习--configparser模块

       使用ConfigParser模块读写ini文件(http://blog.csdn.net/linda1000/article/details/11729561) ConfigParserPyth ...

  2. echart 打开新世界的大门

    实时折线图 option = { backgroundColor:'#2B2B2B', tooltip: { trigger: 'axis' }, legend: { data:['频率'], tex ...

  3. C语言:输入10个整数,找出其中绝对值最小的数

    1 输入10个整数,找出其中绝对值最小的数(10分) 题目描述 输入10个整数,找出其中绝对值最小的数 输入 十个整数 输出 绝对值最小的数 样例输入 -10 -2 30 40 50 60 70 80 ...

  4. 8-11 Add All uva 10954

    有n n小于等于五千 个数的集合s  每次可以从s中删除两个数 然后把他们的和放回集合 直到剩下一个数 每次操作的开销等于删除两个数二之和  求最小总开销 思路:就是每次取最小的两个数即可 用优先级队 ...

  5. 部署 LAMP

    部署 LAMP https://help.aliyun.com/document_detail/50774.html?spm=a2c4g.11186623.6.773.Em8xVc 文档提供方:上海驻 ...

  6. Python 爬虫个人记录(一)豆瓣电影250

    一.爬虫环境 Python3.6 scrapy1.4 火狐浏览器 qq浏览器 二.scrapy shell 测试并获取 xpath 1.进入scrapy shell 2 .获取html fetch(' ...

  7. 网络请求+Gson解析--Retrofit 2

    其实内部是封装了Okhttp和Gson解析 public class CourseFragmentAPI { public static void get(String userId, BaseCal ...

  8. 统计无向图中三角形的个数,复杂度m*sqrt(m).

    统计无向图中三角形的个数,复杂度m*sqrt(m). #include<stdio.h> #include<vector> #include<set> #inclu ...

  9. centos 安装php7、pecl 、swoole、redis拓展

    一.更新yum源,安装php7 CentOS/RHEL 7.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest- ...

  10. 为什么全部width:100%浏览器边缘存在留白?

    一般浏览器都给body加了外边距,margin:0应该能解决你所遇到的问题.但你很可能又会遇到其他奇怪的现象,比如说p的行高,在不同浏览器上显示不一致,最根本的解决方案还是重置浏览器默认样式. 可以使 ...