iphone - 高さ - view controller-based status bar




滑らかなアニメーションでナビゲーションバーを表示/非表示 (2)

バーをスムーズに隠すには[navigationController setNavigationBarHidden: YES animated:YES]を使うことができます

参照

私はナビゲーションベースのアプリを持っています。 最初のビュー(ルートコントローラー)は3つの大きなボタンから始まります。 ナビゲーションバーはありません。 そこから、他のすべてはテーブルビューで、ナビゲーションバーがあります。 私はナビゲーションバーを表示/非表示にするためにこれをやっています:

MyAppAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.navigationController.navigationBar.hidden = NO;

ルートコントローラを離れると、ナビゲーションバーが押し下げられるのではなく、テーブルビューの上に横たわって配置されます。 これは、テーブルビューの上部をクリップします。 ナビゲーションバーが消える方法では、ルートコントローラに戻るのがスムーズではありません。 ルートコントローラ専用のナビゲーションバーを隠すことをよりスムーズにする方法はありますか?


コードのこの素敵なビットはUIの問題なしで隠れているナビゲーションバーをアニメーション化します:

[navigationController setNavigationBarHidden: YES animated:YES]

しかし...

  1. self.navigationController.navigationBarHiddenプロパティではなく、コードのチェックにself.navigationController.navigationBarHiddenプロパティを使用します。 これにより、予期せぬUIの位置付けの問題から多くの苦労を取り除くことができます。
  2. このメソッドを- (void)viewWillAppear:(BOOL)に配置するよう注意してください。ビューのライフサイクルでアニメーションが適用されます。 たとえば、 - (void)viewDidLoadで行うと、ナビゲーションバーを表示していないビューからアニメーション中に醜い黒い矩形ビューが表示されるため、これがおすすめです。 たとえば、ホームビューにナビゲーションバーが表示されていても、すべての子にナビゲーションバーが表示されている場合、ホームビューにポップアップすると、アニメーションが完了するまでナビゲーションバーの代わりに黒いバーが表示されます






uinavigationcontroller