Как программно установить ориентацию устройства в iOS 7?
Я работаю над приложением для iPad, используя AutoLayout, где, если пользователь включает определенный режим (режим «голова-вверх»), я хочу поддерживать только портретную (или портретную вверх ногами) ориентацию и, более того, если устройство находится в пейзаж, я хотел бы автоматически переключиться в портретный режим.
В контроллере вида сверху у меня есть следующее:
- (NSUInteger) supportedInterfaceOrientations {
if (self.modeHeadsUp) {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
} else {
return UIInterfaceOrientationMaskAll;
}
}
- (BOOL) shouldAutorotate {
return TRUE;
}
Основываясь на ответах, которые я видел в другом месте здесь, ответкажется чтобы быть, что я должен использовать "приложение setStatusBarOrientation". Поэтому в методе, в котором пользователь выбрал режим «один на один», я включил:
UIApplication *application = [UIApplication sharedApplication];
[application setStatusBarOrientation:UIInterfaceOrientationPortrait
animated:YES];
Тем не менее, это просто ничего не делает. Хотя я могу физически переместить устройство, чтобы оно повернулось в портретное положение, оно не делает это автоматически.
На самом деле, когда в ландшафтном режиме после запуска вышеуказанного кода попытка программно установить ориентацию, когда я запрашиваю приложение «statusBarOrientation» со следующим кодом, оно остается на «4» для ландшафтного:
UIApplication *application = [UIApplication sharedApplication];
int orientation = [application statusBarOrientation];
self.movesTextView.text = [NSString stringWithFormat:@"ORIENTATION %d", orientation];
Казалось, что, возможно, autolayout не был запущен с setStatusBarOrientation, поэтому я попытался добавить этот код после, безрезультатно
[super updateViewConstraints];
[self.view updateConstraints];
Я понимаю, что Apple хочет оставить ориентацию устройства в руках пользователя. Тем не менее, я хотел бы иметь возможность поддерживать ландшафтный режим, когда не в режиме «один на один».
Я что-то упускаю, чтобы заставить меня изменить ориентацию?