Я делаю какую-то "форму" со многими полями ввода (некоторые являются текстовыми полями, некоторые являются переключателями, некоторые собирают информацию из сборщиков и т. Д.).
В этой форме есть 6 разделов, и характер некоторых ответоввлияет на остальную часть интерфейса (например, если вы выберете, что вы являетесь владельцем автомобиля, под этим будет отображаться больше опций).
Для этого я начал делать очень большое представление (mainView
) это подпредставление UIScrollView
, однако оно становилось слишком большим, поэтому я решил создать один файл пера для каждого раздела.Я устанавливаю владельца файла каждого файла пера на MainFormViewController
, а затем создаю выход для каждого вида: section1View, section2View и т. Д. Я загружаю сечения в -viewDidLoad
следующим образом:
// Section 1
UINib *nib1 = [UINib nibWithNibName:@"Section1" bundle:nil];
[nib1 instantiateWithOwner:self options:nil];
CGRect frame1 = self.section1View.frame;
frame1.origin.y = 10;
[self.section1View setFrame:frame1];
[self.mainView addSubview:self.section1View]; // mainView is the one I add to the scrollView
// Section 2 (goes 10px below section 1)
UINib *nib2 = [UINib nibWithNibName:@"Section2" bundle:nil];
[nib2 instantiateWithOwner:self options:nil];
CGRect frame2 = self.section2View.frame;
frame2.origin.y = frame1.origin.y + frame1.size.height + 10;
[self.section2View setFrame:frame2];
[self.mainView addSubview:self.section2View];
// Same approach for all other sections
// ...
Теперь это, кажется, работает нормально, однако моя проблема в том, что когда я изменяю высоту этих подпредставлений раздела, я не могу заставить остальные подпредставления адаптироваться к изменению высоты.Например, если я изменю высоту первого раздела:
CGRect mainFrame = self.mainView.frame;
CGRect section1Frame = self.section1View.frame;
section1Frame.size.height -= 150;
mainFrame.size.height -= 150;
[UIView animateWithDuration:0.3 animations:^(){
self.section1View.frame = section1Frame;
self.mainView.frame = mainFrame;
self.scrollView.contentSize = mainFrame.size;
} completion:^(BOOL finished){
//
}];
Остальные виды (section2View, section3View и т. Д.) не"следуют" за изменениями в кадреmainView
, какую бы ориентацию я ни пытался.Насколько я понимаю, изменение фрейма mainView
должно влиять на фрейм его подпредставлений, в соответствии с параметрами автоматического изменения размера подпредставлений, верно?В моем случае подпредставления просто остаются в том же месте.
Выбрана опция «Авторазмер подпредставлений» основного вида в Интерфейсном Разработчике.
Кто-нибудь может мне помочь с этим?