iOS 10 Auto Layout - viewDidLayoutSubviews вызывается повторно
Вся раскадровка включена с помощью AutoLayout.
Когда я помещаю журнал в viewDidLayoutSubviews (), я вижу, что он вызывается несколько раз и никогда не останавливается.
У меня нет каких-либо автоматических макетов красных флагов в контроллере вида.
Что может быть причиной этого? Что было бы лучшим способом отладить это?... чтобы выяснить, какая точка зрения борется?
ОБНОВИТЬ
Оказалось, что UILabel создает эту проблему. Несмотря на то, что он имеет все 4 ограничения (x, y, width, height), кажется, он вызывает повторные макеты вверх по дереву......
2 ответа
Я думаю, что это будет связано с тем, как в раскадровке выложены подпредставления. Возможно какая-то ошибочная проводка взглядов. Трудно помочь вам в этом без какого-либо дополнительного контекста о том, как устроены ваши представления и контроллеры представлений. У вас есть пример кода или раскадровка, которой вы могли бы поделиться?
Вы можете попробовать использовать инструмент View Debugger в Xcode. Я не использовал это сам для отладки, кроме того, чтобы просто попробовать это, чтобы увидеть мою иерархию представлений. Начните с установки точки останова в viewDidLayoutSubviews и посмотрите, как меняется иерархия при каждом вызове. https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/debugging_with_xcode/chapters/special_debugging_workflows.html
Если возможно у вас есть какие-то циклы, измените свойство view снова и снова в некоторых подпредставлениях. Проверьте это и выясните это. Останови это.