iOS 7 が 1 年以上前にリリースされたとしても、このレイアウトの問題にはまだ少し誤解が残っていると思います。それで、私は最終的に私の答えをさらに詳しく説明することにしました。
つまりね。
automaticallyAdjustsScrollViewInsets
' デフォルト値はであるためYES
、非常に簡単な解決策は次のコードを追加することです。
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7
self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements
}
ViewController の-viewDidLoad
メソッドに。
ステータス バーのクイクを削除したい場合 (バーの半透明性のため、まったく変ではありません) を追加しself.navigationController.navigationBar.translucent = NO
ます。デフォルト値は ですYES
。
注: これはコンテンツとは関係ありません。透過性のためにコンテンツに関連していますが、それはまったく別の話です。
extendedLayoutIncludesOpaqueBars
がNO
デフォルトなので、self.navigationController.navigationBar.translucent = NO
基本的に持っていることを意味します
self.edgesForExtendedLayout = UIRectEdgeLeft | UIRectEdgeRight| UIRectEdgeBottom;
または、より一般的には、そのようなものです(アイデアを与えるための疑似コードのようなものです...)
BOOL enableTopEdge = extendedLayoutIncludesOpaqueBars && !navigationBarIsTranslucent
self.edgesForExtendedLayout = (enableTopEdge & UIRectEdgeTop) | UIRectEdgeLeft | UIRectEdgeRight | UIRectEdgeBottom;