一、UIViewController 的介绍
UIViewController 是一个视图控制器,用来展示给用户一些信息或者响应设备的方向变化的容器管理控制器。
二、UIViewController 的方法和使用
1、初始化
/**
控制器的创建
*/
let NextVc = FirstViewController()
print(NextVc)
2、控制器的title 和View 的介绍
/**
控制器的图层
self.view :主要用于展示的容器,所有要显示的都要添加到它的上面。
*/
self.view.addSubview(NextVc.view)
/**
self.title
这是给父控制器的提供的标题
*/
self.title = "NetWork小贱"
3、设置控制器的View的背景色
/**
设置背景色
*/
self.view.backgroundColor = UIColor.red
注意:可以使用View类的一些属性和方法
4、向一个视图控制器添加子视图和子控制器
/**
向视图View 上添加图层
*/
let addView = UIView.init(frame: CGRect.init(x: 40, y: 70, width: 100, height: 60))
addView.backgroundColor = UIColor.purple
self.view.addSubview(addView)
/**
控制器的创建
*/
let NextVc = FirstViewController()
print(NextVc)
/**
添加自控制器视图
*/
self.addChildViewController(NextVc)
self.view.addSubview(NextVc.view)
5、控制器之间的跳转和返回
/**
控制器之间的跳转
*/
self.present(NextVc, animated: true, completion: nil)
self.navigationController?.pushViewController(NextVc, animated: true)
/**
返回上一页面
*/
self.dismiss(animated: true, completion: nil)
self.navigationController?.popViewController(animated: true)
self.navigationController?.popToViewController(NextVc, animated: true)
6、控制器的调用方法顺序
1、控制器的各个方法的调用时间和作用介绍如下:
viewDidLoad(元素的添加/函数方法调用等)---> viewWillAppear(页面将要呈现,还未出现) ---> viewWillLayoutSubviews(将要布局元素的大小,还未布置)
---> viewDidLayoutSubviews(布局元素大小开始) ---> viewDidAppear(页面出现)---> viewWillDisappear(页面将要消失) --->viewDidDisappear(页面消失)
2、各个方法
// TODO: 页面将要呈现,还未出现
override func viewWillAppear(_ animated: Bool) {
print("viewWillAppear")
}
// TODO: 将要布局元素的大小,还未布置
override func viewWillLayoutSubviews() {
print("viewWillLayoutSubviews")
}
// TODO: 布局元素大小开始
override func viewDidLayoutSubviews() {
print("viewDidLayoutSubviews")
}
// TODO: 页面出现
override func viewDidAppear(_ animated: Bool) {
print("viewDidAppear")
}
// TODO: 页面将要消失
override func viewWillDisappear(_ animated: Bool) {
print("viewWillDisappear")
}
// TODO: 页面消失
override func viewDidDisappear(_ animated: Bool) {
print("viewDidDisappear")
}
override func loadViewIfNeeded() {
print("loadViewIfNeeded")
}
7、控制器的生命周期图
8、视图约束改变的调用函数
// TODO: 更新视图控制器中视图的布局约束
override func updateViewConstraints() {
super.updateViewConstraints()
}
9、loadView() 和 viewDidLoad() 两个方法的区别和作用
1、loadView() 的介绍
1、loadView() 什么时候被调用
每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。
2、loadView() 的作用是什么?
loadView方法是用来负责创建UIViewController的view
3、loadView() 的作用实现过程是?
默认实现即[super loadView]里面做了什么事情。
1> 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view
# 1》如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件
# 2》如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件
2> 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性。
注意:如果想通过代码来创建UIViewController的view,就要重写loadView方法,并且不需要调用[super loadView],因为在第3点里面已经提到:若没有xib文件,[super loadView]默认会创建一个空白的UIView。
2、viewDidLoad() 的介绍
1.什么时候被调用?
不过你是通过xib文件还是重写loadView创建UIViewController的view,在view创建完毕后,最终都会调用viewDidLoad方法.
2.有什么作用?
一般我们会在这里做界面上的初始化操作,比如往view中添加一些子视图、从数据库或者网络加载模型数据装配到子视图中