web-dev-qa-db-ja.com

UIViewControllerの「エッジを拡張」プロパティを設定する方法

NavBars/tabBarsの下のUIViewControllerのビューの端を拡張するために、ストーリーボードに次の選択が表示されます。

enter image description here

しかし、コード内のすべてのViewControllersに対してこれらのプロパティをグローバルに設定するにはどうすればよいですか? StoryboardのすべてのViewControllerで手動でチェック/チェック解除するのとは対照的です。

29
hgwhittle

IOS7には、これらの設定を制御するための新しいプロパティがいくつかあります。

edgesForExtendedLayoutは、どのエッジを拡張する必要があるかを示します(左、右、上、下、すべて、なし、またはそれらの任意の組み合わせ)。下部エッジを延長すると「下部バーの下」の目盛りに等しくなり、上部エッジを延長すると「上部バーの下」の目盛りに等しくなります。

extendedLayoutIncludesOpaqueBarsは、エッジを不透明なバーの下に自動的に延長するかどうかを示します。したがって、これらの2つの設定を組み合わせると、コード内のインターフェイスビルダーティックの任意の組み合わせを模倣できます。

67
dieworld

エッジまで拡張したくない場合は、追加するだけです:

let viewController = UIViewController()
viewController.edgesForExtendedLayout = []
14
Shaked Sayag

Objective-Cの場合:

- (void) viewDidLoad {
   [super viewDidLoad];
   [self initVars];
}

- (void) initVars {
   self.edgesForExtendedLayout = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeRight | UIRectEdgeBottom;
   self.extendedLayoutIncludesOpaqueBars = YES;
}

必要なプロパティは次のとおりです。

self.edgesForExtendedLayout = UIRectEdgeTop | UIRectEdgeBottom;
3
jordiz