アプリ実行中にステータスバーのサイズが変更された際の対処
通話中やテザリング中などはステータスバーのサイズが変更されるので
ビューの表示の際には
[[UIScreen mainScreen] applicationFrame].size.height
を使ってアプリケーションエリアのサイズを取得し、これを基準にビューの表示を行いましょう!と言うおはなし。
但し、ビューの表示中にステータスバーの変更があった場合は 通知かデリゲートでイベントをフックし必要があれば再描画等の処理を行います。 (通知の設定を行った際は通知解除も忘れずに)
通知の設定
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarWillChange) name:UIApplicationWillChangeStatusBarFrameNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarDidChange) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
デリゲートメソッド
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame{ // NSLog(@"appHeightDidChange=%f",[[UIScreen mainScreen] applicationFrame].size.height); } - (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame{ // NSLog(@"appHeightWillChange=%f",[[UIScreen mainScreen] applicationFrame].size.height); }