0

在我的根視圖中,我創建了一個導航控制器,並將其添加到狀態欄下方20 px。導航欄向上移動,同時導航控制器的彈出動畫

我的導航視圖控制器

狀態欄顯示正常。

enter image description here

當我點擊後退,(凍結動畫截圖)。

當動畫發生時,視圖向上移動。並且 完成後,狀態欄將出現。

enter image description here

代碼:這是我的導航控制器添加到我的VC

在RootView:

navController = [[UINavigationController alloc]initWithRootViewController:myView]; 

navController.navigationBar.translucent = YES; 
navController.view.autoresizingMask = UIViewAutoresizingNone; 

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    CGRect frame=navController.view.frame; 

    frame.origin.y += 20; 
    frame.size.height-=20; 
    navController.view.frame=frame; 
} 

回答

1

這個答案幫了我很多。

Push/Pop View Controller With Navigation Bar from View Controller Without Navigation Bar

添加我的導航控制器與第一個VC,它希望在導航欄隱藏

我有它animated:NO以下片斷..正確使用,必須使用動畫boolean從代表本身。

在VC1:導航欄應該隱藏

我要隱藏像下面的導航欄。

-(void)viewWillAppear:(BOOL)animated { 
    // Hide the bar with animation how viewWillAppear is called 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 

當我將VC2推到VC1時,我需要啓用導航欄。所以在VC1本身,在消失期間iI做下面的事情。

-(void)viewWillDisappear:(BOOL)animated{ 
    // Show the bar with animation how viewWillDisappear is called 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

在VC2:導航欄應該顯示

當我按回到VC2,我實際上是再次隱藏的導航欄。所以,我在視圖中執行它將會消失。

-(void)viewWillDisappear:(BOOL)animated{ 
    // Hide the bar with animation how viewWillAppear is called 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 

主鍵是animated:animated而不是animated:NO .. 難以置信!

1

所以我相信這是你的問題

frame.origin.y += 20; 
frame.size.height-=20; 
navController.view.frame=frame; 

它有蜜蜂每當你的視圖加載時都會調用它。我相信如果你多次前進和後退,你的視窗就會出現。是嗎?如是。確保只會調用一次。

我希望這可以幫助你。

+0

謝謝。這是有道理的,但沒有它只被調用一次。 –