我有一個RootViewController由兩個UIViewControllers在代碼中創建(沒有Storyboard/Nibs)。UIPageViewController與自動佈局不更新childs框架,直到viewDidAppear
第一UIViewController中有如下錨:
weekView.translatesAutoresizingMaskIntoConstraints = false
weekView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
weekView.heightAnchor.constraint(equalToConstant: 100).isActive = true
weekView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
weekView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
其他的UIViewController具有以下主播:
daysViewController.view.translatesAutoresizingMaskIntoConstraints = false
daysViewController.view.topAnchor.constraint(equalTo: weekView.bottomAnchor).isActive = true
daysViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
daysViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
daysViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
這使得其固定在第一個的UIViewController的底部,並採取了休息屏幕高度(頂部UIViewController爲-100)。
第二個UIViewController是一個由UIViewControllers的多個子視圖組成的自定義UIPageViewController。
問題
對於通過在UIPageViewController頁面滾動每個孩子的ViewController有不正確的幀高度時(例如不相同的高度約束告訴它有)的一些原因。 框架高度與屏幕高度相同。
在三種不同的狀態的印刷框架的高度如下:
viewDidLoad PageViewController frame: (0.0, 0.0, 375.0, 667.0)
viewDidLoad ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
viewWillAppear ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
viewDidAppear ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
我需要的567正確的幀大小在viewDidLoad中這麼晚正確地和不佈局子視圖作爲viewDidAppear。
我該如何解決這個問題? 因爲現在我需要考慮到視圖框架是屏幕的整個高度,而不是創建所有子視圖時的567。