不太了解为什么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/

10-08 23:11