web-dev-qa-db-ja.com

iOS 7 UiViewフレームの問題

IOS6とNavigationBarを備えたiOS7で同じアプリを実行していますが、iOS6でもうまく動作しますが、iOS7では、ナビゲーションバーをまったく考慮していないように、すべてのビューが少し上になります。

シミュレートされたメトリックオプションのトップバープロパティを変更しようとしましたが、機能しません。 iOS6ではNavigationBarからのボタンの位置を考慮しますが、iOS7では、画面の上部からそれを考慮します。

その理由は何ですか?

前もって感謝します。

iOS 6 Screenshot

iOS 7 Screenshot

33
PK86

ビューで修正するには、以下の行を使用する必要があります。

 self.edgesForExtendedLayout = UIRectEdgeNone;
53
sinh99

レイアウトと外観の「iOS 7 UI移行ガイド」にも記載されています-iOS7では、View Controllerはフルスクリーンレイアウトを使用します。

ビューにナビゲーションバーから次の場所を表示する場合は、UIViewControllerのedgesForExtendedLayoutこのプロパティを変更して達成できます。

edgeForExtendedLayoutは、拡張するEdgeの方向を指定するUIExtendedEdgeタイプの属性です。

IOS7はフルスクリーンレイアウトを推奨しているため、デフォルト値はUIRectEdgeAllであり、どちらもEdgeの周りに広がります。つまり、ビューNavigationBarがtabBarの下にある場合、ビューはカバレッジを周囲の領域に広げます。

次の設定ビューを作成すると、ビューはバーの背後にあるものに拡張されないため、ラベルが表示されます。ソース印刷を表示

self . edgesForExtendedLayout = UIRectEdgeNone ;
14
PK86

IOS 7では、View Controllerは全画面レイアウトを使用します。 iOS 7 UI移行ガイドに記載されています

レイアウトを変更する場合は、edgesForExtendedLayoutプロパティを使用します

例:

   if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)])

        self.edgesForExtendedLayout=UIRectEdgeNone;
8
hema

この回答の時点では、iOS 7はまだNDAの下にあったため、実際のソリューションを作成することはできませんでした。とにかく支援するために、登録済みの開発者のみが利用できる支援リンクを投稿しました。

====元の投稿:====

iOS 7移行ガイド を読んでください。 「UIの更新」セクションでは、問題の修正方法を説明しています。

5
Tafkadasoh

私自身も同様の問題を抱えており、ナビゲーションバーの半透明性をオフにすると、ビューはiOS6と同じようにドロップダウンすることがわかりました。

self.navigationController.navigationBar.translucent = NO;
5
djneely
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
    [self setEdgesForExtendedLayout:UIRectEdgeBottom];
3
Ritesh verma