Ориентация экрана (Portrait, Landscape, iOS, Xcode 4.2)

Уроки по созданию приложений для iOS (iPhone, iPad, iPod Touch) в Xcode (Objective-C)
Ответить
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Ориентация экрана (Portrait, Landscape, iOS, Xcode 4.2)

Сообщение Александр »

Ориентация экрана (Portrait, Landscape, iOS, Xcode 4.2)
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
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);
С кнопкой Home слева

Код: Выделить всё

return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
Разрешить ландшафтное положение с поворотом устройства кнопкой Home вправо или влево

Код: Выделить всё

return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
Для того чтобы поддерживались все ориентации, можно изменить код на

Код: Выделить всё

return YES;

Чтобы проектировать интерфейс в *.xib файле в нужной ориентации, необходимо выбрать View и в его свойствах изменить параметр Orientation.

Изображение
Ответить