2012-06-01 3 views
1

내 컨테이너 컨트롤러의 방향에 문제가 있습니다.아이폰 컨테이너 컨트롤러 방향 버그

컨트롤러간에 전환 할 때 이전 컨트롤러는 뒤로 전환 할 때 중단 된 방향을 그대로 유지하는 경향이 있습니다.

orientation bug

먼저, 사용하는 재현 방법 :

  1. 용기 컨트롤러 I 가로로 회전되게되면. 이 시점에서 모든 것이보기에는 좋게 보입니다.
  2. 세그먼트 컨트롤을 통해 하위 컨트롤러 # 2로 전환합니다.
  3. 이보기에서 가로로 돌아 가기. 모든 것이 여전히 정상적으로 보입니다.
  4. 하위 컨트롤러 # 1로 다시 전환하십시오. ContainerController의 viewDidLoad에의

:

self.child1 = [self.storyboard instantiateViewControllerWithIdentifier:@"first"]; 
self.child2 = [self.storyboard instantiateViewControllerWithIdentifier:@"second"]; 

[self addChildViewController:self.child1]; 
[self addChildViewController:self.child2]; 

[self.view addSubview:self.child1.view]; 

내가 아이 컨트롤러를 전환하는 방법 :

나는 transitionFromViewController가 자동으로 모든 돌볼 것이라고 가정했다
- (IBAction)segmentChanged:(id)sender 
{ 
    UIViewController *toVc, *fromVc; 
    UISegmentedControl *segment = sender; 

    if (segment.selectedSegmentIndex == 0) 
    { 
     toVc = self.child1; 
     fromVc = self.child2; 
    } 
    else 
    { 
     toVc = self.child2; 
     fromVc = self.child1; 
    } 

    [toVc willMoveToParentViewController:self]; 
    [self transitionFromViewController:fromVc 
         toViewController:toVc 
           duration:0.0 
           options:UIViewAnimationOptionTransitionNone 
          animations:nil 
          completion:^(BOOL finished){ 
           [toVc didMoveToParentViewController:self]; 
          }]; 
} 

. 아무도 내가 뭘 잘못하고 있는지 알아? transtionFromViewController 기능이 새보기 제대로

답변

2

빠른 해결책은 다음 줄을 추가하는 것입니다. 프레임을 설정하는 동안 뷰가 원하는 방향으로 회전하지 않을 수 있습니다. 당신은 그것을 시험해야 할 것입니다. 상태 표시 줄의 방향을 확인하는 것도 할 수 있습니다. 그런 다음 상태 표시 줄의 방향을 보내는 willRotateToOrientation 메서드를 호출합니다. 이것도 도움이되기를 바랍니다.

+0

와우는 내가 생각했던 것보다 더 분명했습니다. 콘텐츠를 다시 그리지 않고 프레임 만 조정할 것이라고 생각했습니다. –

1

내가 오마르 Abdelhafith의 답변을 좋아에 프레임을 설정해야합니다

toVc.view.frame = self.view.bounds; 

를 호출하기 전에

+0

놀랍게도 @Omar Abdelhafith의 답변은보기를 회전시킵니다. 그러나 이것은 유용한 정보입니다. –