【发布时间】:2014-11-04 18:34:18
【问题描述】:
在创建自定义UIViewController 容器(包含其他UIViewController 及其视图的UIViewController)时,谁负责调用viewWillLayoutSubviews 和viewDidLayoutSubviews?我的容器类有两个子控制器,当它移动到父视图控制器时,它们都没有调用这些方法。
UIViewController 的beginAppearanceTransition(_:animated:) 被记录为触发viewWillAppear()、viewWillDisappear()、viewDidAppear() 和viewDidDisappear() 的正确方法,但我看不到viewWillLayoutSubviews() / viewDidLayoutSubviews() 的等价物。
尽我所能,父视图控制器(在这种情况下通过presentViewController(_:animated:completion:) 呈现)负责在其自己的相同方法实现中调用其子控制器viewWillLayoutSubviews() / viewDidLayoutSubviews()。框架似乎在某些情况下调用这些方法(比如当你设置UIWindow 的rootViewController 属性时)而不是其他情况下(比如当你在UIViewController 中调用addChildViewController() 时)。
这是正确、惯用的处理方式吗?
【问题讨论】:
标签: ios cocoa-touch swift uiviewcontroller uikit