1

アプリ全体でナビゲーション バーを使用しUINavigationControllerて表示していますが、ユーザーにステータス バーを表示したくありません。私の問題は、ステータス バーを非表示にすると、ナビゲーション バーのサイズが十分に大きくなく、完全なナビゲーション バーのように見えないことです。

次のいずれかを実行したいと思います。

  1. ステータスバーを単色にします。これはステータス バーの内容を表示せず、文字どおり単なる色になります。

  2. ステータス バーにサブビューを追加して、その「ステータス」コンテンツをすべてカバーできるようにします。このサブビューは単色の UIView になります。

これにより、実際にステータス バーのコンテンツを表示しなくても、上部にフル サイズの「ナビゲーション バー」を表示できます。

編集:

次のUIWindow回避策を試してみましたが、うまくいきませんでした。次のコードは、ビュー コントローラーのviewWillAppear:メソッドの 1 つの中で呼び出されています。

UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
statusWindow.hidden = NO;
statusWindow.backgroundColor = [UIColor redColor];
[statusWindow makeKeyAndVisible];

これを機能させることはできません。ステータスバーを非表示にするか、表示する必要がありますか? 上記のコードで非表示と表示の両方を試みましたが、赤い色UIWindowが画面に表示されません。

4

2 に答える 2

1

私はついにそれを理解しました。このコードは完全に機能します:

self.statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
self.statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
self.statusWindow.hidden = NO;
self.statusWindow.backgroundColor = [UIColor redColor];
[self.statusWindow makeKeyAndVisible];

重要なのは、statusWindow単なるローカル変数であってはならないということです。実際のプロパティである必要があります。そうでない場合、メモリから割り当てが解除されます。

また、その価値のために、これを表示するために電話する必要さえありませんmakeKeyAndVisible.

于 2015-02-06T08:48:01.410 に答える