不太了解为什么layoutIfNeeded仍然不为布局返回正确的宽度...但是,如果我通过分派得到宽度,它将返回正确的宽度。似乎layoutIfNeeded不会立即布局,而是异步布局。纠正我,如果我错了。提前致谢
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
}
}
最佳答案
当通过布局子视图完成视图时,将调用委托方法“ viewDidLayoutSubviews”。在该方法或在该方法之后调用的任何其他方法中,如果您获得视界而不是框架(在启用自动布局的情况下),它将返回正确的宽度。
另一件事可能对您有帮助,那就是在viewWillAppear之前调用了委托方法“ viewDidLayoutSubviews”。调用self.view.layoutIfNeeded()时也会调用它
关于ios - iOS LayoutIfNeeded()返回的大小不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32707072/