Мне сложно понять, почему Эрика Садун делает следующее (вызов viewDidAppear в viewDidLayoutSubviews) в примере ее кулинарной книги Ch07-11. Возможно, эти два метода должны вызывать другой метод?UIViewController viewDidLayoutSubviews
См: https://github.com/erica/iOS-5-Cookbook/tree/master/C07
- (void) viewDidAppear:(BOOL)animated
{
scrollView.frame = self.view.bounds;
scrollView.center = CGRectGetCenter(self.view.bounds);
if (imageView.image)
{
float scalex = scrollView.frame.size.width/imageView.image.size.width;
float scaley = scrollView.frame.size.height/imageView.image.size.height;
scrollView.zoomScale = MIN(scalex, scaley);
scrollView.minimumZoomScale = MIN(scalex, scaley);
}
}
- (void) viewDidLayoutSubviews
{
[self viewDidAppear:NO];
}
Любая идея, почему?
Я бы предположил, что это просто плохой факторинг кода. Она использует системный вызов UIViewControllers, чтобы viewDidAppear выполнял первоначальный макет, а затем лениво повторно использовал тот же метод непосредственно, когда представление было завершено, выкладывая subviews. Я думаю, вы правы в своем предположении, что viewDidAppear должен вызывать метод типа «adjustView», а viewDidLayoutSubviews должен делать то же самое. – RLB
Я обнаружил, что могу поместить все материалы макета в viewDidLayoutSubviews, и ему не нужно быть в viewDidAppear, viewWillAppear или даже didRotateFromInterfaceOrientation. –