2013-06-26 68 views
1

我有一個應用程序,其中第一個屏幕(應用程序的菜單)不需要導航欄,但應用程序的其餘部分。iOS導航欄平滑過渡

我使用的代碼工作正常,導航欄不在菜單屏幕上,並且出現在應用程序的其他地方,但是大問題是,一旦你回到菜單,導航欄出現大約一秒鐘,然後消失。

這不是一個非常平穩的過渡。

如何使SMOOTHER過渡,以便導航欄在返回菜單屏幕時甚至不會出現一秒?

這裏是我使用的代碼:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 

    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    [super viewDidLoad]; 
} 

-(void) viewDidAppear: (BOOL)animated { 
    [[self navigationController] setNavigationBarHidden:YES animated:NO]; 

    [super viewDidAppear:animated]; 
} 
+0

你能解釋這與'xcode'有關嗎? – Popeye

+0

Xcode提供了用於處理「模擬指標」下的導航條的選項,這些選項在這裏可能有用或可能不會有幫助 - 我不想將此視爲解決方案的可能組件。 – user1470914

+0

這與'xcode'沒有任何關係,'xcode'標籤保留給與'xcode IDE'本身相關的問題,而不是你在'xcode'內發現的問題。所以'xcode IDE'的一個問題就是「爲什麼xcode'打不開?」和「我如何更新'xcode'?和問題本身 – Popeye

回答

2

嘗試這樣,

-(void) viewWillAppear: (BOOL)animated { 

    [super viewWillAppear:animated]; 
    [[self navigationController] setNavigationBarHidden:YES animated:YES]; 
} 

希望這可以幫助你......

+0

上面沒有什麼區別,我應該提到我試過」動畫:是的「在所有3個領域,沒有運氣。謝謝Erik。 – user1470914

0

本集在視圖中沒有消失在應用程序的第一個屏幕上

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

,這在第二VC的viewdiddisappear

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

在你的第一個視圖控制器:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:YES]; 
} 

在你的第二個視圖控制器(不是必要的,但對於代碼清晰好的做法):

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:YES]; 
} 
0

而不是隱藏和顯示導航欄,您可以更新導航欄的alpha。它將在過渡期間順利進行動畫製作。對於具有透明導航欄的視圖控制器,而不是修改導航欄,請在第二個控制器的視圖中手動創建一個導航欄(或只是後退按鈕和標題等)。當從第一個視圖控制器轉換到第二個視圖控制器時,我們將隱藏導航欄。

在您的第二個控制器的viewWillDisappear和第一個視圖控制器的viewWillAppear:上,使用self.navigationController.navigationBar.alpha = 0;將導航欄alpha設置爲零。由於這是在動畫塊中,這將導致導航欄在推動動畫期間消失。

將alpha設置回第二個控制器的viewWillAppear和第一個控制器viewWillDisappear中的一個。