带有导航栏和视图控制器的自动布局(iOS 7)

我目前正在将我的应用程序转移到iOS 7(我希望它保持与iOS 6兼容)。 这个问题是不是由苹果NDA覆盖,这是一个关于自动布局的问题(似乎iOS 7强制自动布局(编辑:是错的,它不是强迫))。

我有一个根视图控制器的导航控制器(显而易见)。 在iOS 6中,我没有使用自动布局,所以根视图控制器在导航栏下方。 在iOS 7中,框架原点不包括导航栏,因此我的内容的顶部被隐藏…

你有一个想法如何使自动布局的导航栏上方的整个视图?

谢谢 !

在iOS 7上,您有指定导航栏的topLayoutGuide。 然后,您可以指定您希望tableview的约束位于topLayoutGuide而不是superview。

这将帮助您知道是否是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];