iOS:控制器的生命周期

关于UIViewController生命周期的几个函数:

- (id)init {
    NSLog(@"%s", __func__);
    if(self = [super init]) {
    }
    return self;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor lightGrayColor];
    NSLog(@"%s", __func__);
    [self hf_addButton];
}
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"%s", __func__);
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"%s", __func__);
}
- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    NSLog(@"%s", __func__);
}
- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    NSLog(@"%s", __func__);
}
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"%s", __func__);
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"%s", __func__);

}
- (void)dealloc {
    NSLog(@"%s", __func__);
}

ViewController - - push 到 - HFLifeStyleViewController

输出如下:

输出:
-[HFLifeStyleViewController init]
-[HFLifeStyleViewController loadView]
-[HFLifeStyleViewController viewDidLoad]
-[ViewController viewWillDisappear:]
-[HFLifeStyleViewController viewWillAppear:]
-[HFLifeStyleViewController viewWillLayoutSubviews]
-[HFLifeStyleViewController viewDidLayoutSubviews]
-[HFLifeStyleViewController viewDidAppear:]
-[ViewController viewDidDisappear:]

注意:若ViewController present 到 HFLifeStyleViewController时

iOS13默认modalPresentationStyle是UIModalPresentationAutomatic。

若HFLifeStyleViewController的modalPresentationStyle不是UIModalPresentationFullScreen样式

HFLifeStyleViewController显示出来时,ViewController没有执行dissppear相关方法。

输出如下:

-[HFLifeStyleViewController init]
-[HFLifeStyleViewController viewDidLoad]
-[HFLifeStyleViewController viewWillAppear:]
-[HFLifeStyleViewController viewWillLayoutSubviews]
-[HFLifeStyleViewController viewDidLayoutSubviews]
-[HFLifeStyleViewController viewWillLayoutSubviews]
-[HFLifeStyleViewController viewDidLayoutSubviews]
-[HFLifeStyleViewController viewDidAppear:]

注意:

viewWillLayoutSubviews、viewDidLayoutSubviews可能会调用多次

当控件布局将要变化、已经变化时 会多次调用。

HFLifeStyleViewController完整的生命周期:

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

相关阅读更多精彩内容

友情链接更多精彩内容