一般可以在UIViewController
里的viewDidLayoutSubviews
方法里面空間frame.
通常這個方法會被多次調用, 直到布局完成, 然后在調用viewDidAppear
.
大概在ViewController上面嵌套了3到4個view, 而這些view在viewDidLayoutSubviews
完成之后, frame仍然不是正確值. 花了一個上午查找原因和解決方案.
我的解決方案:viewDidLayoutSubviews
里面對子視圖強制更新布局. 這樣subview上面的控件也會開始布局.
func viewDidLayoutSubviews{
...
self.subView.setNeedsLayout()
self.subView.layoutIfNeeded()
}
setNeedsLayout
標記為需要重新布局,不立即刷新,但layoutSubviews一定會被調用
配合layoutIfNeeded立即更新
layoutIfNeeded
如果,有需要刷新的標記,立即調用layoutSubviews進行布局