iOS v5 ユニバーサル アプリで statusBar を切り替えたいと思っていました。
しかし、他の人がUIViews(私の場合はメインビューに追加されたサブビュー)を持っているように見えるので、デバイスを回転させた場合、非表示のstatusBarによって残された20pxのみを再利用します(私はシミュレーターを使用しています)
そして、私の見解はプログラムで行われます。
グーグルで見つけたいくつかの提案を試しましたが、どれもうまくいかないようでした。つまり、自動サイズ変更/マスクの変更、wantsFullScreenLayout、setNeedsLayout、IB の「全画面表示を使用」。
ビューの フレームの高さ を0に設定していて、高さが[[UIScreen mainScreen] applicationFrame] size.heightに制限されていることに最終的に気付きました。
私が思いついたのは、ビューフレームの高さ を-20に設定し、高さを[[UIScreen mainScreen] applicationFrame] size.height+20に制限することです
ビューでDidLoad.
CGRect theDeviceRect= [[UIScreen mainScreen] applicationFrame];
newMap.frame = CGRectMake(0, -20, theDeviceRect.size.width, theDeviceRect.size.height+20);
これはwillAnimateRotationToInterfaceOrientation:デリゲートにもあります。
ステータスバーを次のように切り替えると:
- (void) toggleStatusBarAction:(id)sender{
BOOL istathidden= [[UIApplication sharedApplication] isStatusBarHidden];
[[UIApplication sharedApplication] setStatusBarHidden:!istathidden withAnimation:UIStatusBarAnimationFade];
}
すべてが期待どおりに機能します。しかし、私の解決策がこれについての良い方法なのか悪い方法なのか、そして何かが欠けているのかどうかを確認したかったのですか?:
よろしくお願いします。MH