视图控制器中view的生命周期

本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

视图控制器中view的生命周期主要体现在以下方法(按照执行顺序排列)

  • 控制器根视图的懒加载,加载根视图
  • -(void)loadView
// 控制器根视图的懒加载,加载根视图
- (void)loadView
{
    [super loadView];
    // -------- 走这个方法加载根视图 --------
    /* 1. 当你需要自定义控制器的根视图的时候重写该方法 */
    /* 2. 也会考虑在该方法中添加一些子视图 */
    
    NSLog(@"%s",__FUNCTION__);
    
}
  • 根视图加载完成
  • -(void)viewDidLoad
// 根视图加载完成
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    /* 1. 通常会在该方法中添加子视图 */
    /* 2. 为控制器做一些数据加载 */
    NSLog(@"%s",__FUNCTION__);
}
  • 页面即将显示
  • (void)viewWillAppear:(BOOL)animated
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    /* 不会去调整初始状态的界面布局 */
    /* 在视图要展示出来之前,做些准备操作,约束还没有计算 */
    NSLog(@"%s",__FUNCTION__);
}
  • 页面已经显示
  • (void)viewDidAppear:(BOOL)animated
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    /* 视图展示出来之后,约束的值已经计算好 */
    
    NSLog(@"%s",__FUNCTION__);
}
  • 页面即将消失
  • (void)viewWillDisappear:(BOOL)animated
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    /* 释放一些不再需要的资源,与UI显示有关的资源 */
    NSLog(@"%s",__FUNCTION__);
}
  • 页面已经消失
  • (void)viewDidDisappear:(BOOL)animated
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    /* 释放一些不再需要的资源,与UI显示有关的资源 */
    NSLog(@"%s",__FUNCTION__);
}

以上就是控制器根视图的生命周期
在viewWillAppear和viewDidAppear之间还要执行两个关键的方法

  • (void)viewWillLayoutSubviews
  • (void)viewDidLayoutSubviews
// -------- 根视图即将要布局子视图 --------
/* 在根视图或者它的子视图的frame值发生改变 */
/* 或者当前屏幕的状态发生改变时调用 */
- (void)viewWillLayoutSubviews
{
    NSLog(@"%s",__FUNCTION__);
}

// -------- 根视图已经完成子视图的布局 --------
- (void)viewDidLayoutSubviews
{
    /* 比如,一旦imageView的frame值改变,切圆角的操作就放在这里进行 */
    NSLog(@"%s",__FUNCTION__);

根据下图完成SB的基本布局
第一控制器是viewController
第二控制器是YFViewController

Snip20160829_3.png

布局完成后,按照下列顺序执各方法


Snip20160829_6.png

当点击item切换到第二控制器时, 按照下列顺序执行各方法

Snip20160829_9.png

当点击返回回到第一控制器时,按照下列顺序执行各方法

Snip20160829_10.png

PS. 本人有若干成套学习视频, 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容