Подтвердить что ты не робот

Автоматическая компоновка с навигационной панелью и контроллером просмотра (iOS 7)

В настоящее время я перехожу к моему приложению в iOS 7 (я хочу, чтобы он оставался совместимым с iOS 6). Этот вопрос не покрывается Apple NDA, это вопрос об автоматическом макете (кажется, что iOS 7 заставляет Auto Layout (EDIT: неправильно, он не принудительно)).

У меня есть контроллер навигации с контроллером корневого представления (очевидно). С iOS 6 я не использовал Auto Layout, поэтому контроллеры корневого представления были ниже панели навигации. В iOS 7 начало кадра не включает панель навигации, поэтому верхняя часть моего содержимого скрыта...

У вас есть идея, как сделать весь вид над панелью навигации с помощью автоматического макета?

Спасибо!

4b9b3361

Ответ 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];