iPad вид сбоку - PullRequest
       23

iPad вид сбоку

1 голос
/ 23 сентября 2010

Я работаю над приложением для 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.который тоже не работал.

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Мне удалось заставить навигационный контроллер вида правильно ориентироваться, добавив его как подпредставление корневого представления моего приложения.

MyRootViewController *myRootViewController = [[[UIApplication sharedApplication] delegate] myRootViewController];
[myRootViewController presentModalViewController:navController animated:YES];

Этот код находится в контроллере вида сверху контроллера навигации, которыйэто подпредставление корневого представления.

0 голосов
/ 23 сентября 2010

Не уверен, что это будет работать, но вы можете добавить этот ключ в ваш Info.plist, чтобы указать, какую ориентацию поддерживает ваше приложение (по крайней мере, это предотвратит запуск в портретной ориентации):

UISupportedInterfaceOrientations~ipad => (UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight)
...