Rendering methods of the view:
- (void)setNeedsLayout;//Сетим флажок что нужно пересчитать лайауты при следующем цикле ранлупа при перерисовке экрана. - (void)layoutSubviews;//Метод вызываетя при перерисовки экрана, здесь обычно задавались раньше фреймы для новых позиций вьюх, сейчас после вызова супера можно брать новые фреймы так как вызывается после -(void)updateConstraints; - (BOOL)needsUpdateConstraints;//Проверка флага на перещет констрайнов. - (void)layoutIfNeeded; //Перериосвать лайауты если поставлен флажок методом - (void)setNeedsLayout; - (void)setNeedsUpdateConstraints; // Вызывается если нужно зафиксировать изменение констрайнов, для следующего пересчета в ранлупе. - (void)updateConstraints;//Метод вызывается для перемчета констрайнов. Обычно тут его перегружают для задания новых констрейнов и анимации.
For UIViewController there are methods:
- (void)viewWillLayoutSubviews; // Ща будут пересчитаны лайауты у вьюхи контроллера. - (void)viewDidLayoutSubviews;// Пересчитаны лайауты у вьюхи контроллера.
For reference, the ViewDidLoad method is called when the view is loaded, and you still need to place it in the view hierarchy and on the screen, only then you can find out the size of the frames. Read the documentation about controller methods:
- (void)viewDidAppear:(BOOL)animated - (void)viewWillAppear:(BOOL)animated - (void)viewDidDisappear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated - (void)viewWillLayoutSubviews - (void)viewDidLayoutSubviews
I write from memory better in the documentation read about these methods.