UIViewController 中常见时序记录(layoutSubViews 与 XXXXappear/disappear 相关)

本文详细记录了UIViewController在不同iOS版本下加载布局及视图出现与消失的时序,对比了iOS 8.x与iOS 9.x中5S设备上的生命周期方法调用顺序,包括从加载到消失的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. UIViewController 中 layoutSubViews 的时序

假如 UIViewController 中的 Xib 中的尺寸是 (375, 667)。

  • iOS 8.x 的 5S 设备上的时序如下:
2016-04-05 15:43:23.637 AutoLayoutDemo[2185:1619209] after super viewDidLoad: {{0, 0}, {375, 667}}
2016-04-05 15:43:23.638 AutoLayoutDemo[2185:1619209] before super viewWillAppear: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.638 AutoLayoutDemo[2185:1619209] after super viewWillAppear: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.644 AutoLayoutDemo[2185:1619209] before super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.644 AutoLayoutDemo[2185:1619209] after super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.644 AutoLayoutDemo[2185:1619209] before super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.645 AutoLayoutDemo[2185:1619209] after super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.645 AutoLayoutDemo[2185:1619209] before super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:23.645 AutoLayoutDemo[2185:1619209] after super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.147 AutoLayoutDemo[2185:1619209] before super viewDidAppear: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.147 AutoLayoutDemo[2185:1619209] after super viewDidAppear: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] before super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] after super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] before super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] after super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] before super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:43:24.148 AutoLayoutDemo[2185:1619209] after super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
  • iOS 9.x 的 5S 设备上的时序如下:
2016-04-05 15:50:38.560 AutoLayoutDemo[2464:1661823] after super viewDidLoad: {{0, 0}, {375, 667}}
2016-04-05 15:50:38.560 AutoLayoutDemo[2464:1661823] before super viewWillAppear: {{0, 0}, {375, 667}}
2016-04-05 15:50:38.561 AutoLayoutDemo[2464:1661823] after super viewWillAppear: {{0, 0}, {375, 667}}
2016-04-05 15:50:38.565 AutoLayoutDemo[2464:1661823] before super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:50:38.566 AutoLayoutDemo[2464:1661823] after super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:50:38.566 AutoLayoutDemo[2464:1661823] before super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:38.566 AutoLayoutDemo[2464:1661823] after super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:38.566 AutoLayoutDemo[2464:1661823] before super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:38.567 AutoLayoutDemo[2464:1661823] after super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.072 AutoLayoutDemo[2464:1661823] before super viewDidAppear: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.072 AutoLayoutDemo[2464:1661823] after super viewDidAppear: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] before super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] after super updateViewConstraints: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] before super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] after super viewWillLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] before super viewDidLayoutSubviews: {{0, 0}, {320, 568}}
2016-04-05 15:50:39.073 AutoLayoutDemo[2464:1661823] after super viewDidLayoutSubviews: {{0, 0}, {320, 568}}

2. UIViewController 中 XXXXappear/disappear 的时序

  • VCA push VCB:
VCA========viewWillDisappear:
VCB========viewWillAppear:
VCA========viewDidDisappear:
VCB========viewDidAppear:
  • VCB pop to VCA:
VCB========viewWillDisappear:
VCA========viewWillAppear:
VCB========viewDidDisappear:
VCA========viewDidAppear:
  • VCA present to VCB
VCA========viewWillDisappear:
VCB========viewWillAppear:
VCB========viewDidAppear:
VCA========viewDidDisappear:
  • VCB dismiss to VCA
VCB========viewWillDisappear:
VCA========viewWillAppear:
VCA========viewDidAppear:
VCB========viewDidDisappear:
  • UITabController 中 VCA(UINavigationController 的 rootViewController) 切换到 VCB(UINavigationController 的 rootViewController) 的 tab:

    • VCB 所在 tab 第一次切换过去:
    VCA========viewWillDisappear:
    VCB========viewWillAppear:
    VCA========viewDidDisappear:
    VCB========viewDidAppear:
    • VCB 所在 tab 之前切换过去过:
    VCB========viewWillAppear:
    VCA========viewWillDisappear:
    VCA========viewDidDisappear:
    VCB========viewDidAppear:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值