Я работаю над приложением для iPad (которое не будет отправлено в App Store), которое поддерживает только альбомный режим.
Большинство представлений в приложении помещаются в UINavigationController со скрытой панелью навигации.
Когда я добавляю следующий код в контроллер вида сверху в вышеупомянутом UINavigationController, new UINavigationController (navController) создается в портретном режиме и появляется в боковом и вне экранном виде.
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
// viewController.view is landscape in MyView.xib
// myViewController is created in landscape mode
NSLog(@"%@", NSStringFromCGRect(myViewController.view.frame)); // {{0, 0}, {1024, 704}}
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:myViewController];
// navController is created in portrait mode (why?)
NSLog(@"%@", NSStringFromCGRect(navController.view.frame)); // {{0, 0}, {768, 1024}}
[self presentModalViewController:navController animated:YES];
// navController is shifted off-screen after it is presented modally (why?)
NSLog(@"%@", NSStringFromCGRect(navController.view.frame)); // {{1024, 0}, {748, 1024}}
Я не могу найти ни одной возможной причины для этого, и при этом я не могу понять, как переориентировать вид в ландшафтный режим;Я могу изменить его фрейм, но его содержимое все еще сбоку.
Я попытался добавить следующее в MyViewController.m, но безрезультатно:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return !UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
Я даже попытался добавить этот код в подкласс UINavigationController.который тоже не работал.