Xcode
を使用Storyboard
しInterface Builder
てステータスバーを完全に無効にする方法はありますか?新しいものを作成するときに、 View Controller
「ステータスバー」を推測からなしに変更し続ける必要はありません。
2 に答える
これが完全な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」の前に呼び出されるためです。
Info.plistでの設定UIStatusBarHidden
が機能するかどうかをすでに確認しましたか?YES
ドキュメントを参照してください:http:
//developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15
これにより、アプリケーションの起動時にステータスバーが非表示になります。