0

UINavigationController 内の UINavigationBars。. . フレーム アニメーションには参加しません。便利ですが、今欲しいものとはまったく異なります。これをオフにする方法はありますか?

私は、showNagitationBar プロパティを非表示に設定し、ビューに独自のプロパティを追加して、考えられる代替案を検討できることを知っています。

私が達成しようとしていること:

UINavigationController を (画面サイズの) コンテナー ビューに配置し、スライドしてサイド メニューを表示したいと考えています。. 前回これを行ったときは、RootVC にカスタムのプッシュ/ポップ メソッドがあり、独自のナビゲーション バーがありましたが、かなりの量の定型コードをセットアップする必要がありましたが、うまく機能しました。

今回も同様の要件がありました。メイン コンテンツはプッシュ/ポップ ベースであり、サイドから表示できるいくつかの補助 VC です。別のアプローチとして、このアプリのルック アンド フィールが非常に標準的であることを考慮して、RootVC 内に UINavigationController を含め、同じように動作することを期待しました。

ただし、コンテナー ビュー内の残りのコンテンツが移動する間、UINavigationBar は所定の位置に固定されたままになります。

4

1 に答える 1

1

何を達成しようとしているのか完全にはわかりませんが、ナビゲーション コントローラーを使用する場合、画面に表示されるもの全体 (トップ ビュー コントローラーのビューとナビゲーション バー) は、ナビゲーション コントローラーのビューに根ざしています。

これは、次のようなことを行う場合を意味します。

[UIView animateWithDuration:1.0 animations:^{
    CGRect frame = self.navigationController.view.frame;
    frame.size.width -= 30;
    self.navigationController.view.frame = frame;
}];

ビューとナビゲーション バーが縮小されます。

編集:スライドイン ビューを適切な場所でナビゲーション コントローラーのビューに追加/削除できます (たとえば、ナビゲーション コントローラーはルート ビュー コントローラーであり、appdelegate のdidFinishLaunch:メソッドで実行できます)。次のコードは、左からスライドインする完全に赤いビューを示します。あなたの場合、このビューはサイド ビュー コントローラーのビューになります。

UIView *left = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
left.backgroundColor = [UIColor redColor];

CGRect ff = left.frame;
ff.origin.x = -ff.size.width;
left.frame = ff;

[self.navigationController.view addSubview:left];

[UIView animateWithDuration:1.0 animations:^{
    CGRect frame = self.navigationController.view.frame;
    frame.origin.x += 50;
    self.navigationController.view.frame = frame;
}];

このようなものはあなたが探していたものですか?

于 2013-09-19T10:15:02.657 に答える