Исправление ориентации контроллеров вида - PullRequest
1 голос
/ 14 сентября 2010

У меня есть кнопка в моем RootViewController .... когда я нажимаю на эту кнопку, она переходит к другому контроллеру ViewView. но я хочу, чтобы при нажатии на кнопку ориентация otherViewController должна быть альбомной & когда я вернусь с этой страницы (otherViewController), я должен снова получить портретный режим.

Большое спасибо за любую помощь. Пожалуйста, помогите мне, я новичок в Iphone, поэтому не могу с этим справиться.

Ответы [ 4 ]

1 голос
/ 16 апреля 2013

Примечание в iOS 6 shouldAutorotateToInterfaceOrientation равно устарело . Вместо этого вы должны использовать supportedInterfaceOrientations и вернуть UIInterfaceOrientationMask.

Так, например:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

Вот все параметры UIInterfaceOrientationMask, которые вы можете вернуть:

UIInterfaceOrientationMaskAll
UIInterfaceOrientationMaskAllButUpsideDown
UIInterfaceOrientationMaskLandscape
UIInterfaceOrientationMaskLandscapeLeft
UIInterfaceOrientationMaskLandscapeRight
UIInterfaceOrientationMaskPortrait
UIInterfaceOrientationMaskPortraitUpsideDown

Вы также должны рассмотреть preferredInterfaceOrientationForPresentation.

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

Может быть, это поможет.

в viewWillAppear вашего нового контроллера представления добавьте

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape]

и в viewWillAppear вашего корневого viewController добавьте

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];

Это вызовет предупреждение, но работает.

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

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

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

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

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

Однако, если вы хотите, чтобы ваш RootViewController всегда представлял свой вид в портретной ориентации, а ваш OtherViewController всегда представлял его в горизонтальной плоскости, это достаточно просто.

В вашем RootViewController'е .h:

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

В вашем OtherViewController'е .h:

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

Хотя это, вероятно, было бы лучше, поскольку допускало бы как горизонтальное, так и горизонтальное вращение:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
...