0

ルートビューでは、ナビゲーションコントローラを作成し、ステータスバーの下に20pxを追加します。ナビゲーションバーのポップアニメーション中にナビゲート

マイナビゲーションビューコントローラ

ステータスバーは通常表示されます。

enter image description here

私は、(スクリーンショットのために凍結アニメーションを)[戻る]をクリックします。

アニメーションが行われているときにビューが上に移動します。そして、 完了後、ステータスバーが表示されます。

enter image description here

コード:これは私がRootViewでは私のVC

にナビゲーションコントローラを追加する方法です:

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

この回答は私を大きく助けました。正しい使い方からアニメーションbooleanを使用する必要があります..私は最初のVCと私のナビゲーションコントローラを追加し、それは私が下記のスニペットでanimated:NOとしてそれを持っていたナビゲーションバーが

を隠さたい

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

デリゲート自身。 VC1で

:ザ・ナビゲーションバーは、私は以下のようなナビゲーションバーを非表示にする必要があり

を非表示にする必要があります。

VC2をVC1にプッシュすると、ナビゲーションバーを有効に戻す必要があります。ですから、VC1自体では、消えていく間に私は以下のことを行います。 VC2で

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

:ナビゲーションバーが

私は戻っVC2で押しを示すべきである、私は実際に再びナビゲーションバーを非表示にする必要があります。ですから、私はそれをviewWillDisappearで行います。

-(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

ありがとうございました。それは理にかなったが、それは一度しか呼ばれていない。 –

関連する問題