Autolayout:ViewDidAppear中的帧大小不正确

Rab*_*bzu 1 autolayout swift xcode6 ios8 ios-autolayout

我有一个UIViewController,我正在通过IB使用Autolayout来定位和调整其子视图.

出于某种原因,我没有得到正确的UIView布局,我决定在VC中记录所有子视图大小.

我记录了子视图大小:

viewDidLoad{
   self.view.layoutIfNeeded()
   print(uiview.size)
}

viewDidLayoutSubviews{
 print(uiview.size)
}
viewWillAppear{
 print(uiview.size)

}
viewDidAppear{
 print(uiview.size)
}
Run Code Online (Sandbox Code Playgroud)

子视图大小是正确的:

  1. viewDidLoad中
  2. viewDidLayoutSubviews
  3. viewWillAppear中
  4. viewDidLayoutSubviews

但它变得不正确:

  1. viewDidLayoutSubviews
  2. viewDidAppear

如何使用ViewWillAppear中正确的子视图大小?为什么在最终的viewDidLayoutSubviews调用和viewDidAppear中我的尺寸不正确?

bjt*_*tus 5

您的"正确尺寸"来自AutoLayout完成其工作之前.框架将是Interface Builder文档中的框架.您需要修复约束以实现您期望的任何帧.

直到最后一次viewDidLayoutSubviews在viewDidAppear之前调用之后,AutoLayout才完成.

  • @bjtitus,我怎么知道它是否是viewDidAppear 之前的最终viewDidLayoutSubviews? (3认同)