web-dev-qa-db-ja.com

単一のビューでiPhoneのステータスバーを非表示にしますか?

1つを除くすべてのビューでアプリのステータスバーを表示したい。私はplistで「ステータスバーが最初に隠されている」を変更しようとしました、私は試しました:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

これはバーを非表示にしますが、ステータスバーがあった場所に青いugいボックスを残します(これは私のビューの一部ではありません。そこには青いものは何もありません)。

また、Xcode 4.2の「インターフェイスビルダー」ビットで、フルスクリーンとステータスバーの設定を必要とするレイアウトを変更しようとしました。

助言がありますか?

編集-解決策:

私は以下を含めることでそれをやった:

    -(void)viewWillDisappear:(BOOL)animated{


    [[UIApplication sharedApplication] setStatusBarHidden:YES];

}


-(void)viewDidAppear:(BOOL)animated{


    [[UIApplication sharedApplication] setStatusBarHidden:NO];

}

ステータスバーを表示するすべてのページで。

ビューを切り替えるたびにタブバーが表示され、再表示されるため、まだ途切れ途切れに見えます。しかし、私は今、この愚かな問題に約5時間取り組んでいるので、これをしなければなりません。

2番目の編集-

ViewWillAppearsにsetStatusBarHidden = NOを含めることで途切れを修正しました。神はすべてがどのように機能するかを知っていますが、実際に機能します。

33
Adam Waite

これを試してみてください。完璧に動作します。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

XIBでは、ステータスバーのオプションを設定しません。

iOS 7の場合。

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

42
Kartik
#pragma mark - Hide statusbar

-(void)hideStatusBar {
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000
    // iOS 7.0 or later
    [self setNeedsStatusBarAppearanceUpdate];
#else
    // less than 7
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
#endif
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}
16
neoneye

上記の解決策が機能しない解決策を探している人がいる場合(そしてまだ上部に迷惑な青い20pxのギャップがあります)、ステータスを望むView Controllerの実装ファイルのviewWillAppearにこれを入れてみてください非表示にするバー。

self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0);

それを修正するのに文字通り12時間かそこらかかり、それが解決策だったので、誰かがこの厄介な問題を抱えている場合に備えてWordを広めています。

8
Adam Waite

Kartikのソリューションは私のために働いた。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

これをviewWillAppear:インスタンスメソッドに追加しました。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    self.webView.scalesPageToFit = YES;
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.co.uk"]]];
}

そして、私もこれに何年も費やしました。 Xcode 4.2を使用して、iOS5シム。

しかし、私が最初にそれを実装したとき、一番上の迷惑な「スペース」がそこにありました。ストーリーボードでView Controllerを選択し、プロパティを次のように設定しました。

私はフルスクリーンを望んでチェックしました。

出来上がり、それはすべてうまくいった。

7
WillShakes

私はこれが古い質問であることを知っていますが、この答えのどれも私にはうまくいきませんので、これは私が単一のviewControllerでステータスバーを非表示にする方法です

まず、parentViewControllerで設定する必要があります。

- (UIViewController *)childViewControllerForStatusBarHidden {
    if ( hideStatusBarViewController ) {
        return hideStatusBarViewController;
    }
    return nil
}

作成された場合にのみ子View Controllerを返します。それ以外の場合はnilがデフォルトです。 hideStatusBarViewControllerを追加するときは、呼び出す必要があります

[self setNeedsStatusBarAppearanceUpdate];

parentViewControllerでは、この関数はchildViewControllerForStatusBarHiddenを強制的に読み取ります。最後に、hideStatusBarViewControllerで設定する必要があります

- (BOOL)prefersStatusBarHidden {
    return YES;
}

それは私のために働く唯一のソリューションです。私はそれが誰かを助けることを願っています。

2
Patricio Bravo

シングルビューのステータスバーを非表示にする場合、これが解決策です

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [self.view sizeToFit];
}
1
Sihad Begovic

別のアプローチをお勧めします。そのビューをアプリケーションのウィンドウに挿入します。

YourUIAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.window insertSubview:self.yourView atIndex:([[appDelegate.window subviews]count])];

こうすると、ステータスバーに表示されます

私はそれがあなたを助けることを願っています

1
Fran Sevillano

これが役立つコードのスニペットです。ビューが読み込まれるとステータスバーが表示され、ビューを離れると再び非表示になります。

-(void)viewWillAppear:(BOOL)animated {
    if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
}


-(void)viewWillDisappear:(BOOL)animated  {
    if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
}
0
Louie