自测的结果如下
前提:一个UIviewController,添加一个ScrollView和Button;ScrollView有三屏的contentSize,每屏添加一个uiview,uiview中无子视图;

方案一:数据初始化、添加子视图、子视图布局都放在viewDidLoad方法中

image.png

方案二:frame布局一部分放在viewDidLoad,一部分放在viewWillLayoutSubviews

image.png

方案三:数据初始化方法放在init方法中;添加子视图的事件放在viewDidLoad中;子视图的布局放在viewWillLayoutSubviews

image.png

通过上面三种写法的测试,可以很直观的看到方案三优于方案一优于方案二