2

viewDidLoad でステータス バーとナビゲーション バーを非表示にしています

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}

すべて正常に動作します。しかし、ビュー コントローラーを閉じると、viewWillDisappear: で次のようになります。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

これにより、すべてのビューが不適切に配置されます。 ここに画像の説明を入力

私は何を間違っていますか?ありがとう

4

2 に答える 2

1

試していないのであくまで推測です。ナビゲーション バーには、あたかも がないかのように設定されたフレームがありStatus barます。何かが間違った順序で行われています。
あなたのコードでは、ステータスバーが存在しないときにナビゲーションバーを表示するように求められたことがわかります。

[self.navigationController setNavigationBarHidden:NO animated:YES];    
[[UIApplication sharedApplication] setStatusBarHidden:NO];

これらの2行を反転してみましたか?(私は推測しているだけです)

私の他のテストは、viewDidAppear で表示されるナビゲーション バーを設定することです。
その時点で、ステータス バーが再び表示されるように applicationFrame が更新されているはずです。


私はそれをテストしましたが、呼び出しを逆にすることで機能します。ただし、ナビゲーション バーとステータス バーのアニメーションは表示されません。それらが必要な場合は、それらの電話を内または内に配置することをお勧めしviewWillAppearますviewDidAppear

于 2012-08-21T03:03:49.673 に答える
0

ナビゲーションバーが表示されている場合、アプリケーションのステータスバーはまだ非表示になっているため、ナビゲーションバーのオフセットYは0です。2つの呼び出し方法の順序を変更する必要があります。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
于 2012-08-21T03:01:19.273 に答える