iOS7でステータスバーとViewが重ならないようにする方法
iOS7でNavigationControllerを使用していない場合は、ステータスバーと描画しているViewが下記のように重なってしまう。
私が行った対処法はViewControllerのselfのViewの上にもう一つ同じ大きさのBaseとなるViewを配置し、そのBaseViewの上に表示したいView群を配置してコードでiOS7以降であればBaseViewのY座標と高さをステータスバーの高さ分調整するといったことをした。
やり方
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //iOS7以降での処理 if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { //ステータスバーの高さを取得 float statusBarHeight = MIN([UIApplication sharedApplication].statusBarFrame.size.height, [UIApplication sharedApplication].statusBarFrame.size.width); //ステータスバーの高さ分、BaseViewのY座標をたす CGPoint viewPoint = (CGPoint) { CGRectGetMinX(_baseView.frame), CGRectGetMinY(_baseView.frame) + statusBarHeight }; //ステータスバーの高さ分、BaseViewのHeightをへらす CGSize viewSize = (CGSize) { CGRectGetWidth(_baseView.frame), CGRectGetHeight(_baseView.frame) - statusBarHeight }; //反映 _baseView.frame = (CGRect) { viewPoint, viewSize }; } } @end
これでステータスバーと表示しているViewが重なることはなくなる。
サンプルコード
Auto LayoutはOFFにしている環境です。