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

Уроки по созданию приложений для iOS (iPhone, iPad, iPod Touch) в Xcode (Objective-C)

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

Сообщение Александр » 15 мар 2012, 21:20

Ориентация экрана (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 - возвращает логическое значение, которое указывает поддерживается ли указанная ориентация (должно ли приложение автоматически изменить ориентацию интерфейса после поворота устройства).
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation


interfaceOrientation
Ориентация интерфейса приложения, после поворота.
Возможные значения UIInterfaceOrientation:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight

Принцип работы такой:
- проверяется текущее положение устройства
- если shouldAutorotateToInterfaceOrientation вернет YES, тогда интерфейс повернется. Если NO, то не повернется.

Официальную документацию можно почитать по ссылке https://developer.apple.com/library/ios ... rence.html


В ViewController.m есть такой код
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  2. {
  3.     // Return YES for supported orientations
  4.     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
  5. }


В этом коде разрешены все ориентации, кроме "вверх ногами".

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

Для того чтобы ориентация была только landscape с кнопкой Home справа
  1. return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);


С кнопкой Home слева
  1. return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);


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


Для того чтобы поддерживались все ориентации, можно изменить код на



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

Изображение
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Вернуться в Уроки Xcode



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron