2010-03-29 2 views
3

나는 두 개의 탭이있는 UITabBarController를 가지고 있습니다.. 상태 표시 줄 크기가 변경되면 크기 조정이 잘됩니다 (에뮬레이터 "통화 상태 표시 줄 전환"메뉴 항목). 다른 하나는 그렇지 않습니다.StatusBar 크기가 변경된시기를 알아 보는 방법 (iPhone)

문제가있는 탭 항목은 동적으로 하나를로드하는 정적 뷰 또는 어떤 일에 따라 다른 보기가 포함되어 있습니다. 이 설정이 작동하는 동안 주 탭보기가 자동으로 전송되지 않음을 발견했습니다. viewWillAppear 및 viewWillDis는 내 동적 하위 뷰에 메시지를 표시합니다.

Apple docs는 시스템에 동적으로 추가 된보기를 인식하지 못했기 때문이라고 설명했습니다.

@interface MyTabViewController : UIViewController 
{ 
    UIView *mainView; 
    FirstViewController *aController; 
    SecondViewController *bController; 
} 
... 
if (index == 0) 
{ 
    self.aController = [[FirstViewController alloc] 
     initWithNibName:@"FirstViewController" bundle:nil];    
    [self.mainView addSubview:aController.view]; 
    [self.aController viewWillAppear:YES]; 
} 

어떻게 내 동적 파단에 상태 표시 크기 변경 이벤트 얻을 수 있습니까? "didChangeStatusBarFrame"은 다른 곳에서 문서화 된대로 작동하지 않습니다.

답변

0

this question을 보셨습니까?

application:didChangeStatusBarFrame:을 사용하여 앱 대표 코드를 볼 수 있습니까?

+0

내 솔루션은 아키텍쳐를 변경하는 것이 었습니다 : 시스템과 작동하지 말고 작업해야했습니다. 즉, 이제는 하나의 UIViewController (하나의 재사용 된 UITableView가 포함되어 있으며 동적으로 dataSource와 delegate를 변경합니다)가 나타납니다. – JOM

+2

didChangeStatusBarFrame을 테스트했을 때 회전만으로 작동했습니다 (앱이 회전하지 않은 경우에도 확인 된 이벤트). 테 더링 또는 전화가 인식되지 않았습니다 ... http://stackoverflow.com/questions/2406175/why-is-uiapplicationwillchangestatusbarframenotification-not-sent-when-the-status – JOM

0

크기 조정은 프로그램 할 수 있지만 일반적으로 "자동 크기 조정 마스크"를 사용하여 수행됩니다. (UIView에는 autoresizingMask 속성이 있습니다).

+0

시스템이 그것에 대해 말해 줄 수 있다면 할 수 있습니다. "자동 크기 조정"이 잘못된 방식으로 설정되었을 수 있습니다. 응용 프로그램이 전혀 회전을 지원하지 않았기 때문일 수 있습니다. – JOM

0

잘 모르겠지만 프로그래밍 방식으로 뷰를 추가 했으므로 자동 크기 조절 마스크를 설정하는 것을 잊었을 수 있습니다. 상태 표시 줄 프레임이 변경되면보기의 크기가 자동으로 조정되지 않습니다.

[newView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 

도움이되기를 바랍니다.