2010-05-30 59 views
2

當做異步HTTP請求,我隱藏iPhone狀態欄和動畫在我自己的自定義UIViewController顯示上傳狀態。因此,用戶不會看到信號強度,運營商,時間和電池壽命,而是會根據HTTP請求的進度獲取消息。我的狀態欄正好是20px,並且很適合狀態欄以前的位置。當HTTP活動完成時,自定義視圖動畫和iPhone狀態欄再次進入。隱藏iPhone狀態欄拉我的tableViews了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動畫:是] 你看不到我的自定義視圖。我怎樣才能讓自定義視圖出現在狀態欄的頂部,這樣我就不必隱藏它了?

謝謝!

回答

2

讓您的特殊視圖成爲自己的UIWindow。將UIWindow的windowLevel設置爲UIWindowLevelStatusBar。如果它仍然不在最上面,你可以在UIWindow上使用bringSubviewToFront:(記住,一個UIWindow是一個UIView)將它帶到那個層次的頂部。

+0

謝謝兄弟!效果很好 – Justin 2010-05-30 04:17:37