2012-02-26 2 views
3

4 가지 방향 모두를 지원하는 부모보기 컨트롤러가 있습니다. 자식보기 컨트롤러를 제공하고 자식보기 컨트롤러가 표시되어있는 동안 장치를 회전 한 다음 자식을 닫으면 부모보기 컨트롤러가 올바르게 회전하지 않습니다.자식보기 컨트롤러가 표시되는 동안 부모보기 컨트롤러가 회전하지 않음

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { 

    newestIssueCoverImageButton.frame = CGRectMake(40, 20, 688, 865); 
    shadow.frame = CGRectMake(40, 20, 688, 865); 
    recordView.frame = CGRectMake(0, 44, 768, 916); 
    classifiedsWebView.frame = CGRectMake(0, 44, 768, 916); 

} else { 

    newestIssueCoverImageButton.frame = CGRectMake(269, 20, 486, 613); 
    shadow.frame = CGRectMake(269, 20, 486, 613); 
    recordView.frame = CGRectMake(0, 44, 1024, 660); 
    classifiedsWebView.frame = CGRectMake(0, 44, 1024, 660); 

} 

부모는이 코드를 사용하지 않은 비록 살펴보고 난 그냥 장치를 회전 : 여기에 내가 부모 뷰 컨트롤러에 회전을 위해 사용하는 코드입니다. 이 코드를 호출하고 현재 사용자가 아이를보고있을 때 상위 뷰 컨트롤러가 올바르게 회전되도록하려면 어떻게해야합니까? 당신의 도움을 주셔서 감사합니다.

답변

8

:

오리엔테이션 변경 될 때 뷰 컨트롤러가 표시되지 않는 경우는, 다음 회전 방법은 호출되지 않습니다. 그러나 뷰가 표시되면 viewWillLayoutSubviews 메서드가 호출됩니다. 이 메서드를 구현하면 statusBarOrientation 메서드를 호출하여 장치 방향을 확인할 수 있습니다.

- (void)viewWillLayoutSubviews { 

    if (notTopController) { 

     [self willRotateToInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation] duration:0]; 
     [self willAnimateRotationToInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation] duration:0]; 

     notTopController = NO; 

} 

지금까지 나를 위해 좋은 작품 :

나는 그 다음, 상단의 ViewController하지 않을 때 추적 할 BOOL을 추가했다.

0

부모 및 자식보기 컨트롤러가 모두 회전을 지원하는지 확인하십시오. shouldAutorotateToInterfaceOrientation :

2

shouldAutorotateToInterfaceOrientation, willRotateToInterfaceOrientation, RotateToInterfaceOrientation 만은 스택에 "뒤에"이 아닌 뷰, 가시/현재보기 컨트롤러에서 전화를받을. 귀하의 경우, 아이가 보일 때 그것은 아이에게 부름을 받지만 부모에게는 부르지 않습니다. 당신이 아이 뷰 컨트롤러를 해제 할 때 (ㄱ있는 navigationController 사용하면 가정)을 회전 이벤트가 된 경우

는, shouldAutorotateToInterfaceOrientation은 부모에 호출됩니다 (그러나 하지will/didRotate). 직접보고 싶다면이 모든 방법에 문을 던지십시오.

이 모든 것을 알고 있다면, 빠른 수정은 shouldAutorotateToInterfaceOrientation에 크기 조정 코드를 던지기 만하면됩니다. 애플의 워드 프로세서

+0

귀하의 도움과 설명에 감사드립니다. 나는 그것을 시도 할 것이다. Btw, 프로필을 보니 Trakr 앱이 정말 멋지다. –

+0

감사합니다. 현재 검토 대기 중 ... – Kevin

관련 문제