iOS LayoutIfNeeded()没有返回正确的大小

时间:2015-09-22 01:39:18

标签: ios swift layout

不要理解为什么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
        }

}

1 个答案:

答案 0 :(得分:0)

当布局子视图完成视图时,将调用委托方法“viewDidLayoutSubviews”。在该方法或此方法之后调用的任何其他方法中,如果您获得视图而不是框架的边界(如果启用了自动布局),它将返回正确的宽度。

另一件事可能会帮助你在viewWillAppear之前调用委托方法“viewDidLayoutSubviews”。调用self.view.layoutIfNeeded()

时也会调用它