18

現在、アプリケーションを iOS 7 に移行しています (iOS 6 との互換性を維持したい)。この質問は Apple NDA の対象ではありません。自動レイアウトに関する質問です (iOS 7 では自動レイアウトが強制されているようです (EDIT : 間違っていました。強制ではありません))。

ルートビューコントローラーを備えたナビゲーションコントローラーがあります(明らか)。iOS 6 では、Auto Layout を使用していなかったので、ルート ビュー コントローラーはナビゲーション バーの下にありました。iOS 7 では、フレームの原点にナビゲーション バーが含まれていないため、コンテンツの上部が非表示になっています...

Auto Layout を使用してナビゲーション バーの上にビュー全体を作成する方法を知っていますか?

ありがとう !

4

1 に答える 1

22

iOS 7 では、ナビゲーション バーを指定する topLayoutGuide があります。次に、テーブルビューの制約がスーパービューではなく topLayoutGuide にあるように指定できます。

これは、iOS7 かどうかを知るのに役立ちます。

if ([self respondsToSelector:@selector(topLayoutGuide)])

だからそれはそのようなものかもしれません

NSString *verticalConstraint = @"V:|[v]|";
NSMutableDictionary *views = [NSMutableDictionary new];
views[@"v"] = self.tableview;
if ([self respondsToSelector:@selector(topLayoutGuide)]) {
    views[@"topLayoutGuide"] = self.topLayoutGuide;
    verticalConstraint = @"V:[topLayoutGuide][v]|";
}
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:verticalConstraint options:0 metrics:nil views:views]];
[self.view addConstraints:constraints];
于 2013-09-11T12:44:16.287 に答える