使用情节提要时,为什么不viewWillAppear绘制我的子视图,viewDidLayoutSubviews并且更重要的是要访问frame.size我必须在其中调用的子视图的子视图中[self.scroller layoutIfNeeded]的值viewDidLayoutSubviews?我有兴趣了解视图控制器的页面生命周期以及从 xibs 到故事板的变化。

使用情节提要时,为什么不viewWillAppear绘制我的子视图,viewDidLayoutSubviews并且更重要的是要访问frame.size我必须在其中调用的子视图的子视图中[self.scroller layoutIfNeeded]的值viewDidLayoutSubviews?我有兴趣了解视图控制器的页面生命周期以及从 xibs 到故事板的变化。

故事板实际上是作为 xib 文件的集合实现的,其中包含有关它们之间的转换(segues)的附加信息。因此,如果我们只是在谈论单个视图控制器,那么视图控制器的生命周期应该不会有根本的不同。
如果不了解您的视图控制器及其视图层次结构是如何设置的,就很难回答您的具体问题。听起来您在滚动视图中有一个视图,并且您想知道何时可以访问其frame属性。
UIKit 遵循以下步骤(大致):
viewDidLoad在这一步之后调用。viewWillAppear:以指示它即将显示视图。viewDidAppear:就会被调用。如果视图autoresizesSubviews设置为NO;你可能会看到一些奇怪的东西 这可能就是你必须打电话layoutIfNeeded的原因self.scroller。请注意,文档layoutIfNeeded说:
收到此消息后,将遍历该层的超层,直到找到不需要布局的祖先层。然后在该祖先下的整个层树上执行布局。
所以它可能会触发其他不相关视图的布局。