IOS6とNavigationBarを備えたiOS7で同じアプリを実行していますが、iOS6でもうまく動作しますが、iOS7では、ナビゲーションバーをまったく考慮していないように、すべてのビューが少し上になります。
シミュレートされたメトリックオプションのトップバープロパティを変更しようとしましたが、機能しません。 iOS6ではNavigationBarからのボタンの位置を考慮しますが、iOS7では、画面の上部からそれを考慮します。
その理由は何ですか?
前もって感謝します。
ビューで修正するには、以下の行を使用する必要があります。
self.edgesForExtendedLayout = UIRectEdgeNone;
レイアウトと外観の「iOS 7 UI移行ガイド」にも記載されています-iOS7では、View Controllerはフルスクリーンレイアウトを使用します。
ビューにナビゲーションバーから次の場所を表示する場合は、UIViewControllerのedgesForExtendedLayoutこのプロパティを変更して達成できます。
edgeForExtendedLayoutは、拡張するEdgeの方向を指定するUIExtendedEdgeタイプの属性です。
IOS7はフルスクリーンレイアウトを推奨しているため、デフォルト値はUIRectEdgeAllであり、どちらもEdgeの周りに広がります。つまり、ビューNavigationBarがtabBarの下にある場合、ビューはカバレッジを周囲の領域に広げます。
次の設定ビューを作成すると、ビューはバーの背後にあるものに拡張されないため、ラベルが表示されます。ソース印刷を表示
self . edgesForExtendedLayout = UIRectEdgeNone ;
IOS 7では、View Controllerは全画面レイアウトを使用します。 iOS 7 UI移行ガイドに記載されています
レイアウトを変更する場合は、edgesForExtendedLayoutプロパティを使用します
例:
if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout=UIRectEdgeNone;
この回答の時点では、iOS 7はまだNDAの下にあったため、実際のソリューションを作成することはできませんでした。とにかく支援するために、登録済みの開発者のみが利用できる支援リンクを投稿しました。
====元の投稿:====
iOS 7移行ガイド を読んでください。 「UIの更新」セクションでは、問題の修正方法を説明しています。
私自身も同様の問題を抱えており、ナビゲーションバーの半透明性をオフにすると、ビューはiOS6と同じようにドロップダウンすることがわかりました。
self.navigationController.navigationBar.translucent = NO;
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];