Unityでステータスバーを表示するアプリのステータスバーをスプラッシュ画面の間だけ非表示にする
2015.01.15 Thursday
ちょっとややこしいですが、基本ステータスバーありのUnityアプリで
スプラッシュ中だけステータスバーなしにしたいという要望があり対応しました。
いろいろ試して以下でOKでした(iPhone版)。
1.Unity側はStatusBar Hiddenはチェックしない。
2.ビルドされたプロジェクトのinfo.plistの「Status bar is initially hidden」をYES
3.UnityAppController.mmを修正
@implementation UnityViewControllerBaseのところにステータスバー関連メソッドを追加
// ステータスバーの非表示
- (BOOL)prefersStatusBarHidden
{
return self.view.tag == 999 ? NO:YES;//NOのとき非表示となる
}
//ステータスバー文字を白くする
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
4.アプリが起動したときにステータスバー更新を呼ぶ
UIViewController * controller = UnityGetGLViewController();
controller.view.tag = 999;
[controller setNeedsStatusBarAppearanceUpdate];
この例では、起動したタイミングでtagに999をセットして、
prefersStatusBarHiddenで999になっていたらステータスバーを表示するようにしています。
スプラッシュ中だけステータスバーなしにしたいという要望があり対応しました。
いろいろ試して以下でOKでした(iPhone版)。
1.Unity側はStatusBar Hiddenはチェックしない。
2.ビルドされたプロジェクトのinfo.plistの「Status bar is initially hidden」をYES
3.UnityAppController.mmを修正
@implementation UnityViewControllerBaseのところにステータスバー関連メソッドを追加
// ステータスバーの非表示
- (BOOL)prefersStatusBarHidden
{
return self.view.tag == 999 ? NO:YES;//NOのとき非表示となる
}
//ステータスバー文字を白くする
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
4.アプリが起動したときにステータスバー更新を呼ぶ
UIViewController * controller = UnityGetGLViewController();
controller.view.tag = 999;
[controller setNeedsStatusBarAppearanceUpdate];
この例では、起動したタイミングでtagに999をセットして、
prefersStatusBarHiddenで999になっていたらステータスバーを表示するようにしています。