IPhonesdk Ориентация Вопрос - PullRequest
0 голосов
/ 05 мая 2011

У меня есть два вида, на первом изображении у меня есть несколько кнопок, я хотел, чтобы этот вид был в горизонтальной плоскости, поэтому я поставил этот код:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

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

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
         return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }

показывает мою ориентацию, которая была у меня на предыдущем просмотре. Должен ли я положить что-то на viewdidload, чтобы это работало? пожалуйста помоги. спасибо

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Это немного взломать, но вот оно.В -(void)viewDidLoad viewController, для которого вы хотите принудительно установить портрет, выполните следующее:

UIViewController *viewController = [[UIViewController alloc] init];
[self presentModalViewController:viewController animated:NO];
[self dismissModalViewControllerAnimated:NO];
[viewController release];

Это в основном вызывает портрет, представляя контроллер (который по умолчанию поддерживает только портрет).

0 голосов
/ 05 мая 2011

Вы должны использовать одну ориентацию для всех контроллеров представления.В противном случае у вас могут возникнуть проблемы.Например, в вашем случае представьте, что пользователь переключился на второй вид и изменил ориентацию на UIInterfaceOrientationPortrait .Теперь он возвращается к первому экрану и все кнопки находятся в неправильных положениях!На самом деле проблема в том, что ориентация не изменится на UIInterfaceOrientationLandscapeRight назад, как вы ожидаете.Это происходит потому, что shouldAutorotateToInterfaceOrientation не вызывается после запуска viewWillAppear .Таким образом, вы должны кодировать некоторые грязные хаки, чтобы вызвать изменение ориентации.Это не хорошее решение.

Кстати, как вы меняете свои контроллеры?Если вы используете addSubview , то вашего второго контроллера shouldAutorotateToInterfaceOrientation вообще не будет срабатывать.При использовании addSubview вы должны справиться с этим самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...