iOS 10自动布局 - 重复调用viewDidLayoutSubviews

时间:2017-03-07 18:10:39

标签: ios swift autolayout viewdidlayoutsubviews viewwilltransitiontosize

整个故事板已启用AutoLayout。

当我在 viewDidLayoutSubviews()中放入一个日志时,我可以看到它被反复调用,并且永远不会停止。

我在视图控制器中没有任何自动布局红色标记。

可能导致这种情况的原因是什么?调试这个的最佳方法是什么?...找出哪个视图正在挣扎?

更新

原来是UILabel造成了这个麻烦。即使它有所有4个约束(x,y,width,height)它似乎是在树上调用重新布局......

2 个答案:

答案 0 :(得分:1)

我最好的猜测是,它与故事板中子视图的布局方式有关。也许是一些错误的视图布线。如果没有关于视图和视图控制器如何布局的更多背景,很难帮助您解决这个问题。您是否有可以共享的代码示例或故事板?

您可以尝试使用Xcode中的 View Debugger 工具。我自己没有用它来进行调试,除了尝试看看我的视图层次结构。首先在 viewDidLayoutSubviews 中放置一个断点,然后观察每次调用时层次结构的变化。https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/debugging_with_xcode/chapters/special_debugging_workflows.html

答案 1 :(得分:0)

如果你有一些循环,可以在某些子视图中反复更改视图属性。检查并找出它。停下来。