Когда вызываются методы ViewWillLayoutSubviews и ViewDidLayoutSubviews?

Когда вызываются методы ViewWillLayoutSubviews и ViewDidLayoutSubviews UIViewController? Каков статус кадра представления перед willLayoutSubviews?

Ответы

Ответ 1

из документации:

Когда изменение вида ограничено, представление регулирует положение его подзонов. Контроллер вашего представления может переопределить этот метод, чтобы внести изменения до того, как представление отобразит его подпункты. (Ссылка)

viewWillLayoutSubviews вызывается в любое время, когда вид вашего контроллера контроллера имеет свои границы. Это происходит, когда просмотр загружается, когда происходит событие поворота, или когда контроллер дочернего представления имеет свой размер, измененный его родителем. (Возможно, есть и некоторые другие ситуации). Если есть что-то, что вам нужно обновить до того, как это представление выйдет (и до того, как ваши ограничения будут повторно применены), вы должны сделать это здесь. вы вообще не должны обновлять ограничения здесь, потому что ограничения обновления могут привести к другому проходу макета.

viewDidLayoutSubviews вызывается после того, как все ваши подсмотры были выложены. Если вам нужно точно настроить этот макет, вручную отрегулировав фреймы, например, это будет место для этого.

просмотр жизненного цикла контроллера может быть немного запутанным, но стоит попытаться понять, если вы собираетесь заниматься разработкой iOS. Эта статья является действительно хорошим обзором.