iOS10 UI教程视图的生命周期
iOS10 UI教程视图的生命周期
说到视图的生命周期一般都是指视图控制器的视图生命周期。在视图的声明周期中最主要的有8个方法,分别为loadView()、viewDidLoad()、viewWillAppear(_:)、viewWillLayoutSubviews()、viewDidLayoutSubviews()、viewDidAppear(_:)、viewWillDisappear(_:)、viewDidDisappear(_:),对于这几个方法的说明如表1-5所示。视图的生命周期的流程以及这些方法的调用时机如图1.29所示。
表1-5 方法介绍
|
方法 |
功能 |
|
loadView() |
载入视图,通常这一步不需要去干涉。 |
|
viewDidLoad() |
载入完成,可以进行自定义数据以及动态创建其他控件 |
|
viewWillAppear(_:) |
视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了 |
|
viewWillLayoutSubviews() |
即将开始子视图位置布局 |
|
viewDidLayoutSubviews() |
用于通知视图的位置布局已经完成 |
|
viewDidAppear(_:) |
视图已在屏幕上渲染完成 |
|
viewWillDisappear(_:) |
视图即将消失 |
|
viewDidDisappear(_:) |
视图已经消失 |

图1.29 生命周期
注意:在图中给出了这些方法的调用顺序,当然需要注意这几个方法的调用是由iOS系统决定的,不需要读者自己调用。
【示例1-12:LifeCycle】以下将使用代码说明视图的生命周期中方法的执行顺序。具体的操作步骤如下:
(1)打开Main.storyboard文件,从视图库中拖动Button按钮控件到主视图中,将Button的标题改为“移除视图”。
(2)将Button按钮控件进行动作removeView的声明和关联。
(3)打开ViewController.swift文件,编写代码,通过输出语句查看视图生命周期中方法的顺序。代码如下:
import UIKit
class ViewController: UIViewController {
//载入完成
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
print("viewDidLoad")
}
//轻拍按钮,移除视图控制器的视图
@IBAction func removeView(_ sender: AnyObject) {
view.removeFromSuperview()
}
//载入视图
override func loadView() {
super.loadView()
print("LoadView")
}
//视图将出现在屏幕之前
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print("viewWillAppear")
}
//视图已在屏幕上渲染完成
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
print("viewDidAppear")
}
//即将开始子视图位置布局
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("viewWillLayoutSubviews")
}
//视图的位置布局已经完成
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("viewDidLayoutSubviews")
}
//视图即将消失
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
print("viewWillDisappear")
}
//视图已经消失
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(true)
print("viewDidDisappear")
}
……
}
此时运行程序,会看到如图1.30所示的效果。不仅如此,还会在应用程序输出窗口输出以下内容:
LoadView viewDidLoad viewWillAppear viewWillLayoutSubviews viewDidLayoutSubviews viewDidAppear
当开发者轻拍“移除视图”按钮后,会看到视图控制器的主视图被移除,如图1.31所示。不仅如此,还会在应用程序输出窗口输出以下内容:
viewWillDisappear viewDidDisappear

图1.30 初始状态 图1.31 移除主视图
iOS10 UI教程视图的生命周期
iOS10 UI教程视图的生命周期的更多相关文章
- iOS10 UI教程视图的绘制与视图控制器和视图
iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...
- iOS10 UI教程视图调试
iOS10 UI教程视图调试 iOS10 UI教程视图调试,当视图很复杂的时候,层次结构就不会很简单了.Xcode可以通过视图(View)调试帮助开发者解决层次结构复杂的问题.视图调试是在Xcode ...
- iOS10 UI教程视图和子视图的可见性
iOS10 UI教程视图和子视图的可见性 iOS10 UI教程视图和子视图的可见性,一个父视图可以通过clipsToBounds属性,定义子视图在边界(边界就是父视图的框架也就是父视图可以显示的范围) ...
- iOS10 UI教程视图的中心位置
iOS10 UI教程视图的中心位置 center表示的是视图的中心位置属性,这个属性在相对的UI层次结构上工作,和frame类似.center属性是一个在父视图上定义视图的位置的简便方法.center ...
- iOS10 UI教程视图的边界与视图的框架
iOS10 UI教程视图的边界与视图的框架 iOS10 UI视图的边界 在视图的几何形状中我们提到了视图属性中的一部分属性可以将定义的视图绘制在屏幕上.其中典型的3个属性为边界属性.框架属性以及中心位 ...
- iOS10 UI教程视图的几何形状
iOS10 UI教程视图的几何形状 视图属性中的一部分属性可以让定义的视图绘制在屏幕上.在讲解这些属性前,我们首先将讲解,定义视图的几何形状所涉及到的结构类型.这些结构类型如下: CGPoint:它表 ...
- iOS10 UI教程子视图和父视图UI层次结构和Views继承
iOS10 UI教程子视图和父视图UI层次结构和Views继承 iOS10 UI教程子视图和父视图UI层次结构和Views继承,本节将讲解与UI层次结构和Views继承相关的内容,其中包括子视图和父视 ...
- iOS10 UI教程基改变视图的外观与视图的可见性
iOS10 UI教程基改变视图的外观与视图的可见性 视图是应用程序的界面,是用户在屏幕上看到的对象.用户可以通过触摸视图上的对象与应用程序进行交互,所以视图界面的优劣会直接影响到了客户体验的好坏.和视 ...
- iOS10 UI教程层次结构的事件
iOS10 UI教程层次结构的事件 iOS10 UI教程层次结构的事件,层次结构中存在7个事件,对于这些事件的介绍如表1-3所示.通过这些事件,可以监听视图,当视图在层次结构上发生变化时可以被拦截,也 ...
随机推荐
- 【leetcode】Remove Duplicates from Sorted Array I & II(middle)
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- 在微信浏览器中如何让他自动关闭当前页面回到会话框js
<script type="text/javascript"> wx.config(jssdkconfig); require(['jquery', 'util'], ...
- 网站配置好了,在本地能登录系统,但是挂在IIS上就无法登录了,提示数据库连接错误
我用的VS2010开发的网站,但是挂在本机的IIS上的时候就无法登录了,提示错误如下:
- 关闭Eclipse的控制台console自动跳出
一.背景 在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就会感觉瞬间想杀人,下面我们就来分享 ...
- [Android Pro] 使用apktool工具遇到could not decode arsc file的解决办法
转:http://www.cnblogs.com/sage-blog/p/4323049.html 最近使用APKtool工具反编译APK老是提示不成功,错误如下: Exception in thre ...
- [Android] adb 命令 dumpsys activity , 用来看 task 中的activity。 (uninstall virus)
用“adb shell dumpsys activity”命令再来查看一下系统运行的的任务,就会看到: ACTIVITY MANAGER ACTIVITIES (dumpsys activity ac ...
- grep(Global Regular Expression Print)
.grep -iwr --color 'hellp' /home/weblogic/demo 或者 grep -iw --color 'hellp' /home/weblogic/demo/* (-i ...
- c语言运算符
一.op=形式的赋值操作符 int a=0; a+=1; //等价于 a=a+1;// a*=1; 二.op=类表达式 int a=10,b=5; a/=b;//等价于a=a/b; a*=b+1; ...
- hdu3038(带权并查集)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 题意: n表示有一个长度为n的数组, 接下来有m行形如x, y, d的输入, 表示 ...
- NYOJ题目113字符串替换
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAAHvCAIAAAA930vtAAAgAElEQVR4nO3dPVLjysIG4G8T5CyE2A ...