Objective-C 2.0, iPhone, iPod, iPad, iOS
В этой статье описано как работать с ориентацией экрана в Xcode.
В проекте на вкладке Summary можно выбрать поддерживаемые ориентации интерфейса.
Для этого выбираем нужные ориентации под надписью Supported Device Orientations.
Меняя поддерживаемые ориентации таким способом, автоматически меняются параметры Supported interface orientations в файле Info.plist.
Можно открыть файл Info.plist и изменить параметры прямо там.
В Info.plist можно добавить строку Initial interface orientation. Этот параметр определяет начальную ориентацию интерфейса приложения.
Допустимые значения:
- Portrait (bottom home button)
- Portrait (top home button)
- Landscape (left home button)
- Landscape (right home button)
Эти параметры не отключают поворот экрана. Они нужны для того чтобы приложение знало в какой ориентации оно должно быть запущено, еще до того как будет запущено.
Для того чтобы приложение работало в нужной ориентации, необходимо изменить код.
Существует метод shouldAutorotateToInterfaceOrientation - возвращает логическое значение, которое указывает поддерживается ли указанная ориентация (должно ли приложение автоматически изменить ориентацию интерфейса после поворота устройства).
Код: Выделить всё
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
Ориентация интерфейса приложения, после поворота.
Возможные значения UIInterfaceOrientation:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
Принцип работы такой:
- проверяется текущее положение устройства
- если shouldAutorotateToInterfaceOrientation вернет YES, тогда интерфейс повернется. Если NO, то не повернется.
Официальную документацию можно почитать по ссылке https://developer.apple.com/library/ios ... rence.html
В ViewController.m есть такой код
Код: Выделить всё
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ // Return YES for supported orientations return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}
Для того чтобы поддерживались какие-то конкретные ориентации, нужно переопределить shouldAutorotateToInterfaceOrientation, чтобы метод возвращал YES для доступных ориентаций.
Для того чтобы ориентация была только landscape с кнопкой Home справа
Код: Выделить всё
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
Код: Выделить всё
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
Код: Выделить всё
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
Код: Выделить всё
return YES;
Чтобы проектировать интерфейс в *.xib файле в нужной ориентации, необходимо выбрать View и в его свойствах изменить параметр Orientation.