Ответ 1
На iOS 7 у вас есть topLayoutGuide, который указывает панель навигации. Затем вы можете указать, что вы хотите, чтобы ограничение tableview находилось в 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];