12

Xcodeを使用StoryboardInterface Builderてステータスバーを完全に無効にする方法はありますか?新しいものを作成するときに、 View Controller「ステータスバー」を推測からなしに変更し続ける必要はありません。

4

2 に答える 2

24

これが完全なiOS7準拠のソリューションです(ただし、変更が多すぎるため、iOS 6とは互換性がありません)

Appleドキュメントから':情報プロパティリストキーリファレンス':

UIViewControllerBasedStatusBarAppearance(ブール値-iOS)は、ステータスバーの外観が、現在ステータスバーの下にあるビューコントローラーが優先するスタイルに基づいているかどうかを指定します。このキーが存在しないか、その値がYESに設定されている場合、ViewControllerはステータスバーのスタイルを決定します。キーがNOに設定されている場合、ビューコントローラ(またはアプリ)はそれぞれ、UIApplicationオブジェクトを使用してステータスバーのスタイルを明示的に設定する必要があります。このキーはiOS7.0以降でサポートされています。

したがって、デフォルトではこのキーは存在しません(=キーを追加した場合と同じ動作ですが、YESに設定します):この場合、各View Controllerは、いくつかのメソッドをオーバーライドすることにより、ステータスバーの動作を決定します-以下を参照してください。

1)アプリのすべてのviewControllerのステータスバーをグローバルに表示/非表示にします

したがって、最初に質問に対する完全な回答を作成して、すべてのアプリのviewControllersに対して単一のグローバルな表示/非表示設定を行います。

ステップ1:frameWork-Info.plst'ファイルに、キー'ビューコントローラーベースのステータスバーの外観'を追加し、'NO'に設定します。このキーを「NO」に設定すると、iOS7はメソッド「prefersStatusBarHidden」および「preferredStatusBarUpdateAnimation」を呼び出さなくなります。詳細を参照してください。

ステップ2:プロジェクト設定->一般->デプロイメント情報で、アプリケーションの起動時に「表示/非表示」を選択します

以上です:iOS 7に準拠して、ステータスバーをグローバルに表示または非表示にできるようになりました

2)すべてのviewControllerがステータスバーを個別に制御できるようにします(= iOS 7のデフォルト)

ステップ1:iOS 7のデフォルトの動作を取得するには、キーを追加したり追加したりせずに、YESに設定します

ステップ2:各viewControllerで、:をオーバーライドしてステータスバーを表示/非表示にするかどうかを決定できるようになりました。

  • (BOOL)prefersStatusBarHidden
  • (UIStatusBarAnimation)preferredStatusBarUpdateAnimation

したがって、ステータスバーの動作を制御するためにこれらの2つのメソッドをオーバーライドし、アプリケーションに適切な値を返す必要があります(すべての可能な値については、ドキュメント参照を参照してください。明確に説明されています)。

アプリの起動時の動作(表示される最初のコントローラー)を制御するには、プロジェクト設定->一般->デプロイメント情報で表示/非表示を設定します

iOS 7は単一の外観スタイル(UIStatusBarStyleLightContent)のみをサポートし、他のすべては非推奨であることに注意してください。

したがって、たとえばボタンを使用してバーのオン/オフを簡単に切り替えることができます-可能な限り柔軟に!

たとえば、viewControllerにボタンを追加し、bool @property'isStatusBarHidden'次のコードを使用して、アニメーションでバーのオン/オフを切り替えます。

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

- (IBAction)buttonToggleStatusBar:(UIButton *)sender
{
    [UIView animateWithDuration:1.0 animations:^{
        self.isStatusBarHidden = !self.isStatusBarHidden;
        [self setNeedsStatusBarAppearanceUpdate];
    }];

}

好みのアニメーションでも同じことができます

高度な注意:@property'isStatusBarHidden'のデフォルト値を設定する場合は、viewDidLoadではなく'initWithCoder'(ストーリーボードを使用する場合に呼び出されます)で設定する必要があります。その理由は、「preferredStatusBarHidden」と「preferredStatusBarUpdateAnimation」が「viewDidLoad」の前に呼び出されるためです。

于 2013-12-15T12:51:44.630 に答える
12

Info.plistでの設定UIStatusBarHiddenが機能するかどうかをすでに確認しましたか?YESドキュメントを参照してください:http: //developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15

これにより、アプリケーションの起動時にステータスバーが非表示になります。

于 2012-01-23T17:41:42.667 に答える