Ландшафтный режим ТОЛЬКО для iPhone или iPad - PullRequest
36 голосов
/ 15 апреля 2010

Я хочу создать приложение, которое не использует портретный режим.

Я не уверен, что мне нужно отредактировать список или иметь код в дополнение к списку

Ответы [ 4 ]

47 голосов
/ 15 апреля 2010

Код найден здесь

Запуск в ландшафтном режиме

Приложения в iPhone OS нормально запустить в портретном режиме, чтобы соответствовать ориентация главного экрана. если ты есть приложение, которое работает в обоих портретный и ландшафтный режимы, ваш приложение всегда должно запускаться в портретный режим изначально а потом пусть его контроллеры вида вращают интерфейс по мере необходимости на основе ориентация устройства. Если твой приложение работает в ландшафтном режиме только вы должны выполнить следующие шаги, чтобы запустить его в изначально альбомная ориентация.

  • В файле Info.plist вашего приложения добавьте UIInterfaceOrientation
    ключ и установите его значение на
    ландшафтный режим. Для ландшафта
    ориентации, вы можете установить значение
    этого ключа к
    UIInterfaceOrientationLandscapeLeft
    или
    UIInterfaceOrientationLandscapeRight.

  • Выложите свои виды в ландшафтном режиме и убедитесь, что их параметры авторазмера установлены правильно.

  • Переопределить ваш контроллер вида shouldAutorotateToInterfaceOrientation: метод и вернуть YES только для
    желаемая альбомная ориентация и NO
    для портретной ориентации.

29 голосов
/ 18 июля 2012

Чтобы сделать ваше приложение в альбомном режиме только , вы должны использовать «Поддерживаемые ориентации интерфейса». (Targets -> YourApp -> Supported Interface Orientations -> Landscape Left & Right)

Supported Interface Orientations

Вы также должны установить ориентацию приложения в файле Info.plist приложения (Info.plist file), добавив клавишу Supported interface orientations со значениями Landscape (left home button) и Landscape (right home button). row's

Вы можете использовать willRotateToInterfaceOrientation и / или didRotateFromInterfaceOrientation для обработки изменений ориентации.


shouldAutorotateToInterfaceOrientation устарело с iOS 6 и более.

Возвращение UIDeviceOrientationLandscapeLeft/Right для shouldAutorotateToInterfaceOrientation должно сделать ваше приложение "ландшафтным":

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

Также могут изменить ваши приложения Info.plist и View Orientation (как описано выше).


Кроме того, я рекомендую изменить ориентацию вида на Landscape в Инспектор атрибутов . landscape

26 голосов
/ 21 июля 2011

Вы также можете просто сократить все до

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
10 голосов
/ 15 апреля 2010

отредактируйте список для поддержки только ландшафта, затем убедитесь, что в каждом контроллере uiview / uitabbar и т. Д., В shouldAutoRotateToInterfaceOrientation, return говорит return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));.

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