2012-10-14 190 views
1

我希望在我的iPhone應用程序中有一個「全屏模式」,當用戶按下按鈕時,狀態欄,導航欄和工具欄會在屏幕之外動畫(比如iOS 6橫向模式下Safari的全屏功能)。我基本上顯示一個UINavigationController與UIViewController作爲頂級視圖控制器。同時隱藏/顯示導航欄,工具欄和狀態欄

我可以通過從UIViewController中做這個隱藏的元素:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 

    [self.navigationController setToolbarHidden:YES animated:YES]; 

    [self.navigationController setNavigationBarHidden:YES animated:YES]; 

然而,動畫不同步,並且內容的大小調整是不完全的流體。如果您使用Safari全屏功能進行遊戲,您可以看到動畫完美流暢。關於如何用完美動畫實現這一點的任何想法?

+0

類似.. http://stackoverflow.com/questions/21929220/show-hide-uitoolbar-match-finger-movement-precisely-as-in-for-example-ios7-s – Fattie

回答

0

你可以做到以下幾點:

[UIView animateWithDuration:0.4 animations:^() { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    [self.navigationController setToolbarHidden:YES animated:NO]; 
    [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    self.yourView.frame = CGRectMake(0, 0, 320, 480); // If you have several views, set all their frames to 'fullscreen' 
}]; 

您可以通過使用該方法UIView animateWithDuration:(delay: options: animations:^(void)animations completion:^(BOOL finished)completion使用自定義動畫,只是檢查出UIViewAnimationOptions

+1

感謝您的迴應,但該解決方案並不完全符合我的要求。雖然它有助於將狀態欄動畫時間與其他2進行同步,但它並不能讓事情像我想的那樣流暢。這很難描述這個問題,因爲它是關於動畫的,如果我絕望了,我會開始發佈我的動畫和這個解決方案的視頻。 – spybart

+0

我也嘗試過這種方式,不幸的是事情發生變化的速度並不太匹配。 – Rick