2014-11-04 27 views
3

當創建一個自定義的UIViewController容器(一個包含其他UIViewControllers及其視圖的UIViewController)誰負責調用viewWillLayoutSubviewsviewDidLayoutSubviews?我的容器類有兩個子控制器,它們在移動到父視圖控制器時都沒有調用這些方法。誰負責在自定義UIViewController容器中調用viewWillLayoutSubviews()/ viewDidLayoutSubviews()?

UIViewController的beginAppearanceTransition(_:animated:)被記錄爲觸發viewWillAppear()viewWillDisappear()viewDidAppear(),並viewDidDisappear()但我看到沒有類似viewWillLayoutSubviews()/viewDidLayoutSubviews()的正確途徑。

如最佳我可以計算父視圖控制器(其在此情況下,經由presentViewController(_:animated:completion:)提交)負責調用其子控制器viewWillLayoutSubviews()/viewDidLayoutSubviews()在它自己執行這些方法相同的方法。框架似乎在某些情況下調用這些方法(例如,當您設置屬性UIWindow)而不是其他(例如當您撥打addChildViewController()UIViewController)。

這是一種正確的,習慣的方式去做事嗎?

回答

3

誰負責調用viewWillLayoutSubviews和viewDidLayoutSubviews?

運行時間。你不應該自己調用這些方法。

+2

除了超級實現。 – 2014-11-04 18:39:32

+0

@IanMacDonald良好的附錄,謝謝。 – matt 2014-11-04 18:40:11

+0

也許我應該更清楚。如果它是運行時,那麼如何讓它在自定義容器內的UIViewController對象上調用它們? – 2014-11-04 18:41:31