Принудительное переключение UIInterfaceOrientation с альбомной ориентации на портретную?

#ios #iphone #uiinterfaceorientation

#iOS #iPhone #ориентация uiinterfaceorientation

Вопрос:

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

Я работаю над приложением для IOS 6 и IOS 7, просто мне нужно перейти от моего первого ViewController «A», который находится в альбомной ориентации, ко второму ViewController «B», который находится в портретной ориентации.

Я настроил проект так, чтобы включить всю желаемую ориентацию, установил «соответствующий» код, но при этом второй вид отображался вертикально в альбомной ориентации..

введите описание изображения здесь

вот код, который я установил для первого контроллера :

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

-(BOOL)shouldAutorotate
{
return YES;
}

-(NSUInteger)supportedInterfaceOrientations {

return UIInterfaceOrientationMaskLandscape ;
}
  

Пожалуйста, помогите.

Комментарии:

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

2. когда я помещаю тот же код на свой второй контроллер с портретной ориентацией, я получаю эту ошибку: «Поддерживаемые ориентации не имеют общей ориентации с приложением, и shouldAutorotate возвращает YES», поэтому я изменил его на NO, чтобы избавиться от этой ошибки, и я получаю то же самое, что и на изображении выше.

Ответ №1:

Если вы используете методы UINavigationViewController( pushViewController:animated: и popViewControllerAnimated:), представления унаследуют ориентацию предыдущего представления.

С другой стороны, если вы используете presentModalViewController:animated: dismissModalViewControllerAnimated: методы and , все работает отлично.

Также вот пример проекта, который также меняет ориентацию по вашему желанию

Комментарии:

1. Спасибо, Ахмед, я просто добавляю свои представления с помощью [firstVieController.view addSubview:SecondViewController.view]; разве нет способа сделать это правильно?

2. Да, таким образом вы также можете получить желаемую ориентацию