33

ステータスバーを非表示にしようとしていますが、「より大きな」ナビゲーションバーの高さを維持しています。- (BOOL)prefersStatusBarHiddenに設定しYESてから呼び出すことでステータスバーを非表示にすると[self setNeedsStatusBarAppearanceUpdate];、これの問題は、ナビゲーションバーが上にスライドし、表示しようとしている通知用のスペースが残らないことです。ステータスバーに単にビューを追加することはできません。ステータスバー/ナビゲーションには派手なぼかし効果があります。ステータスバーの高さで標準のナビゲーションバーの高さを維持し、そこからステータスバーを削除する方法を知っている人はいますか?

編集; 私がやったことは、リスクを冒して、プライベート API を介してステータスバーの UIWindow を取得し、それを相殺することです。

編集 2; アプリはプライベート API で承認されました。ただし注意してください!

4

5 に答える 5

3

フレームを次のように使用してカスタム UIView を作成できます。

customView.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);

また、以下の手順に従ってステータスバーを非表示にします

info.plist に移動し、存在しない場合は 2 つの属性を追加します。「ステータスバーは最初は非表示」をYESに設定UIViewControllerBasedStatusBarAppearanceし、 に設定しNOます。これにより、アプリのステータス バーが非表示になります。

于 2014-06-02T09:21:02.817 に答える
1

のメソッドを使用する必要がありますpositionForBar:UIBarPositioningDelegate Protocol.

別の回答やコピー/ペーストを入れたくないので、次の質問\回答を詳しく見てください。:)

iOS 7 ステータス バーが NavigationBar と衝突する
iOS 7 UIToolBar がステータス バー
でオーバーライドする iOS7 でコンテンツが重なるステータス バー

于 2014-06-05T06:37:08.380 に答える
0

Another workaround here: subclass UINavigationController override method:

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    if (self.navigationBar.frameMinY < 1) {
        self.navigationBar.frameHeight = 64;
    } else {
        self.navigationBar.frameHeight = 44;
    }
}

in which set frameMinY is set frame.origin.y and set frameHeight is set frame.size.height

于 2017-08-30T12:47:06.967 に答える