Я был поиск высоким и низким, чтобы попытаться понять это, надеюсь, кто-то может помочь (я думаю, что это, вероятно, довольно тривиально, но я как раз над запутанной ситуации!)Встраивание вид контейнера в UIScrollView
I используя XCode 5 и раскадровки. У меня есть вид контейнера, который занимает около 75% пространства экрана на iPhone. Над этим у меня есть несколько кнопок (и другие виджеты). Я хочу иметь возможность загружать в контроллер представления в контейнер при нажатии одной из кнопок.
Пока все это работает нормально, но диспетчеры просмотра, которые загружаются, имеют разные размеры и могут измениться в будущем. Я хотел бы иметь возможность прокручивать просмотр ребенка (произвольного размера).
Я попытался вставить контейнер в виде прокрутки, но затем, как часть процесса добавления нового дочернего представления, вы должны установить размер кадра, но я хочу, чтобы ребенок понял, насколько он должен быть, а затем установить все соответственно.
Я не совсем уверен, что лучший способ пойти об это (или установка ограничений в раскадровку или программно?)
Любой совет будет здорово! Или ссылка на учебник была бы очень полезной, единственными, которые я мог найти, были добавление контроллеров представлений в представление контейнера или добавление представлений в прокрутку, ни одна из которых, похоже, не работает так, как ожидалось, с Xcode 5 (iOS 7)
Спасибо!
-Edit-
Вот код, который я использовал, чтобы представить контроллер представления детали произвольного размера, остальное все готово в раскадровке (только в случае, если это полезно для тех, кто в будущем!) Это теперь работает:
- (void)presentDetailController:(UIViewController*)detailVC{
//0. Remove the current Detail View Controller shown
if(self.currentDetailViewController){
[self removeCurrentDetailViewController];
}
//1. Add the detail controller as child of the container
[self addChildViewController:detailVC];
//2. DO NOT Define the detail controller's view size
//detailVC.view.frame = [self frameForDetailController];
//3. Add the Detail controller's view to the Container's detail view and save a reference to the detail View Controller
[self.detailView addSubview:detailVC.view];
self.currentDetailViewController = detailVC;
// Pin the height to the container to make it scrollable?
[self.detailView addConstraint:[NSLayoutConstraint constraintWithItem:self.detailView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0f constant:detailVC.view.bounds.size.height]];
//4. Complete the add flow calling the function didMoveToParentViewController
[detailVC didMoveToParentViewController:self];
}
Спасибо, я уже пробовал этот подход, но не смог заставить его работать (просмотр прокрутки просто не прокручивался). Как вы собираетесь настраивать рамку представления контейнера и дочернего элемента при загрузке нового представления контроллера представления? – user2851943
Вы разрешаете автомасштабирование делать это за вас. Я попытаюсь привести пример. – Travis
Пример был бы потрясающим! Спасибо огромное! – user2851943