4

У меня очень простой сценарий, который не работает для меня. У меня есть один раскадровку с двумя контроллерами отображения:iOS: контроллер детского просмотра и автоматический макет

ViewController1 
- ViewA 
- ViewB 

ViewController2 
- ViewC 

Мой ViewController1 работает как задумано, и когда я повернуть устройство мнения настроить правильно, в соответствии с автоматическим макет, который я определил.

У меня ViewController2 есть размер свободной формы (768x722), и я снял опцию «Изменить размер изображения с ниба».

Это мой ViewController1didLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    UIViewController *vc2 = [story instantiateViewControllerWithIdentifier:@"vc2"]; 

    [self addChildViewController:vc2]; 
    [vc2 didMoveToParentViewController:self]; 
    [self.viewA addSubview:vc2.view]; 
} 

Когда я повернуть устройство метод - (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation от ViewControlled2 его называют, и это показывает правильную ориентацию. Однако ViewC не изменяет его размеры и не соответствует моим настройкам автомакета.

Кто-нибудь знает, как я могу это исправить? Я просто хочу добавить свой ViewController2 внутри ViewA и сохранить автоматический макет, работающий для просмотров ViewController2. Мне нужно только решение для iOS 7, поэтому не требуется совместимость с более ранними версиями.

Кто-нибудь может мне помочь?

+0

Вам нужно будет выслать ваши ограничения и снимок экрана вашего вида. – Bot

+0

мои ограничения верны. Например, если я заменю viewA для ContainerView и привяжу контейнер segue к ViewController2, он работает. Тем не менее, у меня есть другие ViewControllers в моей раскадровке, которые можно добавить в ViewA, поэтому мне нужно сделать это программно, и когда я сделаю поворот, это не сработает. – Rafael

ответ

7

Я нашел решение, и я зарегистрирую его здесь, на случай, если кому-то это понадобится.

Я создал свойство UIViewController для хранения моего ViewController2. После этого я добавил следующий метод:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    self.vc2.view.frame = self.viewA.bounds; 
} 
+3

В качестве добавления, если вы вызываете метод с контроллера дочернего представления, вы можете использовать 'self.view.frame = self.parentViewController.view.bounds;' – Chris

 Смежные вопросы

  • Нет связанных вопросов^_^