web-dev-qa-db-ja.com

iOSのステータスバーを隠す方法

私のiOSビデオアプリでは、ステータスバーはView Controllerによっては隠されています。次のコードを使用してこれを行いました。

[[UIApplication sharedApplication] setStatusBarHidden:YES];
  • IOS 5とiOS 6では機能しますが、iOS 7では機能しません。

  • 私はこれを特にView Controllerで試しました、

例えば:

-(BOOL)prefersStatusBarHidden { return YES; }

うまく機能しますが、親View Controllerにステータスバーを再度表示できません。

213
Susitha

この値をplistに追加する必要があります。 "View Controllerベースのステータスバーの外観"とそれを ""に設定します。いいえ "。

enter image description here

275
Rajneesh071

Info.plistに以下を追加してください。

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Image

187
Shekhar Gupta

Viewdidloadに次の行を追加します。

  [[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationFade];

そして新しいメソッドを追加する

  - (BOOL)prefersStatusBarHidden {
          return YES;
  }

info.plistファイルも変更します。コントローラベースのステータスバーの外観の表示 "= NO

その仕事は私のために

111
Hitesh Vaghela

Plistに以下のプロパティを追加します。

Status bar is initially hidden = YES

View controller-based status bar appearance = NO

今すぐステータスバーが非表示になります。

33

この簡単な方法を試してください。


目的C:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}

迅速:

override func viewWillAppear(animated: Bool) 
{
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) 
{
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
27

私は次のことをしました、そしてそれは(iOS 8でも)動作するようです。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}
14
smartbot
  • UIApplication.setStatusBarXはiOS9以降非推奨です
  • Info.plistにUIViewControllerBasedStatusBarAppearance = NOを含めることは非推奨です。
  • そのため、すべてのView ControllerでpreferredStatusBarXを使用する必要があります。

しかし、UINavigationControllerが関係しているともっと面白くなります。

  • NavigationBarHidden = trueの場合、子はステータスバーの下にコンテンツを表示しているので、子のUIViewControllerのpreferredStatusBarXが呼び出されます。
  • NavigationBarHidden = falseの場合、UINavigationControllerのpreferredStatusBarXが呼び出されます。結局、ステータスバーの下にコンテンツが表示されています。
  • UINavigationControllerのデフォルトのpreferredStatusBarStyleは、UINav.navigationBar.barStyleの値を使用します。 .Default =黒のステータスバーの内容、.Black =白のステータスバーの内容.
  • そのため、barTintColorをカスタムカラーに設定している場合(おそらくそうですが)、ステータスバーの内容を白にするにはbarStyleを.Blackに設定する必要もあります。 barStyleがbarTintColorをオーバーライドする場合は、barTintColorを設定する前にbarStyleを黒に設定します。
  • もう1つの方法は、バーのスタイルを変更するのではなく、UINavigationControllerをサブクラス化することです。
  • ただし、UINavigationControllerをサブクラス化した場合、navigationBarHidden = trueの場合はステータスバーを制御できません。どういうわけかUIKitはこの状況でUINavigationControllerに尋ねずに子UIViewControllerに直接行きます。私はそれが子供> shrugs <に尋ねることはUINavigationControllerの責任であるべきだと考えていたでしょう。
  • ModalPresentationStyle = .FullScreenの場合、モーダル表示されたUIViewControllerはステータスバーに発言を表示するだけです。
  • カスタムのプレゼンテーションスタイルのモーダルView Controllerを持っていて、それをステータスバーの制御に使いたい場合は、modalPresentationCapturesStatusBarAppearance = trueを設定できます。
12
Chris

IOS7でステータスバーを隠すには2行のコードが必要です

  1. アプリケーション内:(UIApplication *)アプリケーションdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

     [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
  2. info.plistでこれを追加

     View-Controller Based Status Bar Appearance = NO
    
9
Shaik Riyaz

よりよく理解するために、コメント付きの写真をいくつか追加してください。

変更前のアプリ

enter image description here

Project Navigatorという名前のSupporting Filesフォルダにあり、* .plistファイルをクリックします。

enter image description here

あなたが示したあなたのアプリの異なる設定を取得した後。 UIStatusBarHiddenUIViewControllerBasedStatusBarAppearanceという2つのキーを追加する必要があります。あなたは単に+ボタンをクリックしてこれを行うことができます

enter image description here

+を押した後、あなたはキーの1つを選ぶことができます - ちょうどタイプし始めてください。

正しいバージョン

enter image description here

そして最後に、この変更を適用した後に適用します。

enter image description here

また、あなたはここで代わりの解決策を見つけることができます

8
gbk

試してみてください。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
7

IOS10では、prefersStatusBarHiddenRootViewController varを上書きするだけです(Swift)。

override var prefersStatusBarHidden: Bool {
    return true
}
7
andrewz

これはSwiftバージョンです(iOS9以前):

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}

これも動作します(iOS 7以降):

override func prefersStatusBarHidden() -> Bool {
    return true
}

あなたも呼び出す必要があります:

setNeedsStatusBarAppearanceUpdate()

たとえばviewDidLoad()です。

SplitViewコントローラや他の何らかのcontainerビューコントローラを使用している場合は、送信されたchildViewControllerForStatusBarHiddenが返されたときにクラスを返すようにする必要もあります。これを行うための1つの方法は、例えばstatusControllerのようなpublic weak varを持ち、それをこのオーバーライドされたメソッドで返すことです。

5
Esqarrouth

IOS7でステータスバーを隠すには:

Plistファイルを開き、 "View controller-based status bar appearance"という行を追加して、その値をNOに設定します。

5
Manju

iOS 9以降:

statusBarHiddenメソッドは 廃止予定 から iOS9 でしたので、以下のようにplistに2つの値を追加する必要があります。

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

またはユーザーインターフェースで以下の画像を更新してください。

enter image description here

statusBarHidden 廃止予定 from iOS9

@property(readwrite、nonatomic、getter = isStatusBarHidden)BOOL statusBarHidden NS _ _非推奨_ _ IOS(2_0、 9_0 、 "使用 - [UIViewController prefersStatusBarHidden]")

4
Ketan P

Swift 3以降用の解決策(iOS 9、10)

1-プロパティの下に設定info.plist

enter image description here

2-ルートコントローラに以下のコードを貼り付けます。

 private var isStatusBarHidden = true {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }

isStatusBarHidden = trueおよびisStatusBarHidden = falseは、ステータスバーをhide/showにしたい場所で呼び出すことができます。

4
MANISH PATHAK

この値をplist: "View controller-based status bar appearance"に追加して "NO"に設定する必要があります。

4
bLacK hoLE

iOSのステータスバーを隠す手順
1。 AppDelegate.mファイルを開き、didFinishLaunchingWithOptionsメソッドにapplication.statusBarHiddenを追加します。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
  1. info.plistを開いて設定する

View controller-based status bar appearance set NO

4
Ashu

Susithaの質問に答えるには、setNeedsStatusBarAppearanceUpdateを使用してください。これにより、prefersStatusBarHiddenを呼び出して、必要なステータスバーの状態に更新されます。これを試して:

    @property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early

    - (BOOL)prefersStatusBarHidden {
        return self.isHideStatusBar;
    }

    - (void)someMethod {
    // triggered by an event or user action
    [self setHideStatusBar:YES];
    [self setNeedsStatusBarAppearanceUpdate];
    }

ステータスバーをもう一度表示するには、プロパティhideStatusBar(またはそれを呼び出したもの)をすべてNOに設定します。に別の呼び出しを行うことによって、間接的にpreferStatusBarHiddenを呼び出します。

[self setNeedsStatusBarAppearanceUpdate]
2
smileBot

Swift 5

IOSステータスバーを非表示にするには、次の手順を使用します。

  1. Info.plistで開きます。
  2. 新しいキーを追加コントローラーベースのステータスバーの外観を表示し、値をNOに設定します。
  3. 新しいキーの追加ステータスバーは最初は非表示で、値はYESに設定されています。
  4. プロジェクトを再コンパイルします。
  5. ステータスバーは、iOSスマートフォンで非表示になりました。

最終設定のスクリーンショット:

Final Settings

これはXcode 10.2で動作しています

2
Jerry Chong

UIKit> UIApplication.hから:

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

View controller-based status bar appearanceをNOに設定してください。

2
Tony

Swift 3用に更新します。

以下の情報でInfo.plistを更新します。

View controller-based status bar appearance: NO

次に、ViewControllerなどで:

UIApplication.shared.isStatusBarHidden = true

1
Prazgaitis