2013-10-02 3 views
0

Я разрабатываю приложение для iPad, которое должно поддерживать только ориентацию ландшафта. Я использую эти два метода, чтобы добавить новый контроллер представления ребенка моего контейнера контроллер представления:Контроллер просмотра контейнера iOS добавляет вид ребенка в портретной ориентации

- (void) assignFirstChildViewController:(UIViewController*)controller 
{ 
    self.currentChildViewController = controller; 
    [self addChildViewController:self.currentChildViewController]; 
    [self.currentChildViewController didMoveToParentViewController:self]; 
    [self.containerView addSubview:self.currentChildViewController.view]; 

} 
- (void)assignNewChildController:(UIViewController *)childViewController 
{ 
    id currentChildViewController = self.currentChildViewController; 

    if(!currentChildViewController){ 
     [self assignFirstChildViewController:childViewController]; 
    }else{ 

     [self.currentChildViewController willMoveToParentViewController:nil]; 
     [self addChildViewController:childViewController]; 

     __weak __block PTSBaseContainerViewController *weakSelf=self; 
     [self transitionFromViewController:self.currentChildViewController 
          toViewController:childViewController 
            duration:1.0 
            options:0 
           animations:^{ 
            [UIView transitionFromView:self.currentChildViewController.view toView:childViewController.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve completion:NULL]; 
           } 
           completion:^(BOOL finished) { 
            [weakSelf.currentChildViewController removeFromParentViewController]; 
            weakSelf.currentChildViewController = childViewController; 
            [weakSelf.currentChildViewController didMoveToParentViewController:weakSelf]; 
           }]; 


    } 
} 

Проблема в том, что вид контроллера зрения ребенка добавляется в портретной ориентации, и это портит мнение, как показано на следующее изображение:

enter image description here

зеленый взгляд вид контроллера зрения ребенка, который, как вы можете увидеть, добавляется в портретном режиме. Вместо того, чтобы занимать весь желтый вид (который является видом контейнера и он занимает весь кадр контроллера вида под серым верхним баром), он добавляется в портретном режиме, и я не могу понять, почему.

PS: Я попытался перекрывая shouldAutomaticallyForwardRotationMethods и shouldAutomaticallyForwardAppearanceMethods, как написано в документации яблоко, но без каких-либо результатов.

ответ

1

Как вы увидите в Apple's documentation, вам необходимо вручную установить кадр для контроллера детского вида.