WAB_EARTH

自由を手に入れたい人へ。一緒に世界を見て歩こう。

*

iOS7でNavigationBarの下にViewが埋まってしまう

      2013/10/06

iOS7にアップデートしてからNavigationBarの下にViewが埋まってしまった人・・・多いんじゃないでしょうか?

これ、xibやStoryBoardでNavigationBarを配置してその下にViewを配置してなってしまった現象。。(恐らくGCRectなどの座標で指定したからバグった?)

xibで調整すればiOS7ではうまく表示できるのですが、iOS6で表示してみると崩れてるしw(当たり前か…)

でもなんでiOS6ではちゃんとうまくいったのになぜiOS7だと食い込むのか?
それはiOS7では座標の開始位置が変わってしまったようです!
34rx5
iOS6は座標の始まりがナビゲーションバーの下から

88p3I
iOS7は座標の始まりがステータスバーの所から

こんなイメージです!画像をみるとわかりやすいですねb
ステータスバーの所まで入ってるので完全に全画面使っての表示って感じですね!

じゃーどうすればいいの!?!?!?!?

こうすれば直りました!!
DidLoadにこのコードを書いてあげることでレイアウトが調節されてiOS7でもナビゲーションバーに食い込まなくなります!

- (void)viewDidLoad
{
    [super viewDidLoad];
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;
}

ちなみにコードで書くともちろんXibやStoryboardには直ってるように反映されないのでStoryBoardやXib上で設定するのがいいかも!?
StoryBoardでViewを選択してあげて属性インスペクタでedgesForExtendedLayoutのチェックを外してあげるとiOS7でもうまいこと表示できるようになります!!

 - iPhoneアプリ開発