2010-05-30 4 views
2

비동기 HTTP 요청을 할 때 iPhone 상태 표시 줄을 숨기고 내 상태의 UIViewController에서 애니메이션 상태를 표시하여 업로드 상태를 표시합니다. 따라서 신호 강도, 이동 통신사, 시간 및 배터리 수명을 보는 대신 사용자는 HTTP 요청 진행 상황에 따라 메시지를받습니다. 내 상태 표시 줄은 정확히 정확히 20px이며 상태 표시 줄이있는 위치에 잘 맞습니다. HTTP 작업이 완료되면 사용자 정의보기가 애니메이션으로 바뀌고 iPhone 상태 표시 줄이 다시 애니메이션으로 바뀝니다.iPhone 상태 표시 줄을 숨기면 테이블이 20px 위로 당겨집니다.

iPhone 상태 표시 줄을 완전히 숨기지 않고 상태 표시 줄의 맨 위에 사용자 정의보기를 가져 오는 것을 피하고 싶습니다. . 현재 사용자 정의보기 애니메이션을 호출하고 iPhone 상태 표시 줄을 표시로 유지하면 내 사용자 정의보기가 뒤에 있습니다.

-(void) animateStatusBarIn { 
     CGRect statusFrame = CGRectMake(0.0f, -20.0f, 320.0f, 20.0f); 
     UploadStatusBar *statusView = [[UploadStatusBar alloc] initWithNibName:@"UploadStatusBar" bundle:nil]; 
    self.status = statusView; 
    [statusView release]; 
    status.view.frame = statusFrame; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
    [window addSubview:status.view]; 
    [UIView beginAnimations:@"slideDown" context:nil]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 
    status.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 20.0f); 
    [UIView commitAnimations]; 

} 

-(void) animateStatusBarOut { 
    [UIView beginAnimations:@"slideUp" context:nil]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 
    status.view.frame = CGRectMake(0.0f, -20.0f, 320.0f, 20.0f); 
    [UIView commitAnimations]; 
} 

-(void)animationFinished:(NSString *)name { 
    if ([name isEqualToString:@"slideDown"]) { 

    } 
    if ([name isEqualToString:@"slideUp"]) { 
      [[UIApplication sharedApplication]setStatusBarHidden:NO animated:YES]; 
     [status.view removeFromSuperview]; 
    } 


} 

포함하지 않는 :

는 내가 가지고있는 코드입니다 [[UIApplication sharedApplication] setStatusBarHidden : YES 애니메이션 : YES] 내 사용자 지정보기를 볼 수 없습니다. 내 사용자 정의보기를 상태 표시 줄 위에 표시되도록 숨기려면 어떻게해야합니까?

감사합니다.

답변

2

특수 뷰를 고유 한 UIWindow로 만듭니다. UIWindow의 windowLevel을 UIWindowLevelStatusBar로 설정하십시오. 여전히 위에 있지 않다면, 당신은 그 레벨의 최상단에 가져 오기 위해 UIWindow에서 bringSubviewToFront :를 사용할 수 있습니다 (UIWindow는 UIView 임). 여기

+0

감사합니다. 잘 작동합니다. – Justin

관련 문제