为什么viewdidlayoutsubviews会多次调用?

时间:2014-11-19 10:21:45

标签: ios swift autolayout

我正在Swift上开发iOS通用应用程序,使用自动布局并仅支持肖像。

我发现多次调用UIViewController#viewdidlayoutsubviews。相反,viewDidLoad仅在启动MyApp的UIViewController时调用一次。

为什么viewdidlayoutsubviews多次拨打电话?每个UIViewUIButtonsUITextFields等等)的约束将按顺序执行?

任何信息都将受到赞赏。

2 个答案:

答案 0 :(得分:22)

LoadView仅被称为一个:当需要加载视图时。

但是,

LayoutSubviews在任何已调用setNeedsLayoutsetNeedsDisplayInRect的视图上每个运行循环调用一次 - 这包括每次向视图添加子视图时,滚动,调整大小等。

答案 1 :(得分:1)

最好的办法,这对我很有帮助 - 就是养成为你不确定的方法添加日志或打印声明的习惯

我用这个 - >

print("Hello From \(NSStringFromSelector(#function))")

或者如果在View子类中

Swift.print("Hello From \(NSStringFromSelector(#function))")

它将在调用方法时打印该方法。