不要理解为什么layoutIfNeeded仍然没有为布局返回正确的宽度...但是如果我通过调度获得宽度,它将返回正确的宽度。看起来layoutIfNeeded没有立即布局而是async。如果我错了,请纠正我。提前致谢
override func viewWillAppear(animated:Bool){
super.viewWillAppear(animated)
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
//incorrect width returned for UIView
dispatch_async(dispatch_get_main_queue(), {
//correct width returned
}
}
答案 0 :(得分:0)
当布局子视图完成视图时,将调用委托方法“viewDidLayoutSubviews”。在该方法或此方法之后调用的任何其他方法中,如果您获得视图而不是框架的边界(如果启用了自动布局),它将返回正确的宽度。
另一件事可能会帮助你在viewWillAppear之前调用委托方法“viewDidLayoutSubviews”。调用self.view.layoutIfNeeded()
时也会调用它