Подтвердить что ты не робот

Как отключить ландшафтную ориентацию?

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

4b9b3361

Ответ 1

Чтобы отключить ориентации для определенного контроллера просмотра, вы должны теперь переопределить supportedInterfaceOrientations и preferredInterfaceOrientationForPresentation.

- (NSUInteger) supportedInterfaceOrientations {
    // Return a bitmask of supported orientations. If you need more,
    // use bitwise or (see the commented return).
    return UIInterfaceOrientationMaskPortrait;
    // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    // Return the orientation you'd prefer - this is what it launches to. The
    // user can still rotate. You don't have to implement this method, in which
    // case it launches in the current orientation
    return UIInterfaceOrientationPortrait;
}

Если вы нацелились на что-то старше, чем на iOS 6, вам нужен метод shouldAutorotateToInterfaceOrientation:. Изменив, когда он вернет yes, вы определите, будет ли он поворачиваться в указанную ориентацию. Это позволит только нормальную портретную ориентацию.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 

    // Use this to allow upside down as well
    //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}

Обратите внимание, что shouldAutorotateToInterfaceOrientation: устарел в iOS 6.0.

Ответ 2

Xcode 5 и выше

  • Нажмите на свой проект в Навигаторе проектов на левой боковой панели, чтобы открыть настройки проекта.
  • Перейдите на вкладку Общие.
  • Снимите флажки, которые вы не хотите в разделе Информация о развертывании, в разделе Ориентация устройства

screenshot showing where to click

Ответ 3

Xcode 4 и ниже

Для тех, кто это пропустил: вы можете использовать экран настроек проекта, чтобы фиксировать ориентации в приложении (нет необходимости переопределять методы в каждом контроллере):

enter image description here

Это так же просто, как переключение поддерживаемых ориентаций интерфейса. Вы можете найти, щелкнув на своем проекте в левой панели > вкладка "Цель приложения" > "Сводка".

Ответ 4

Если вы хотите отключить альбомную ориентацию для iPhone и iPad.

Перейдите на Цели и перейдите на вкладку Общие. См. приведенный ниже экран и отмените выбор ландшафта влево и пейзаж вправо.

enter image description here

Здесь в этом случае будет отключен только ландшафтный режим iPhone, а не для iPad. Для iPad доступны все режимы. Если вы хотите выбрать вариант устройства от универсального до iPad. Это будет выглядеть так. Смотрите ниже экран.

enter image description here

Теперь вам нужно отменить выбор всех режимов , кроме Портрета для iPad. Смотрите скриншот ниже.

enter image description here

Теперь вы успешно отключили все режимы , кроме Портрета для всех устройств.

Ответ 5

Swift 3 Если у вас есть navigationController, подкласс такой, как это (только для портрета):

class CustomNavigationViewController: UINavigationController {

  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.portrait
  }

  override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
    return UIInterfaceOrientation.portrait
  }
}

Ответ 6

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

Ответ 7

Xcode 8, Xcode 9, Xcode 10 и выше

enter image description here

Ответ 8

Самое простое решение для iPhone и iPad (универсальное) - его удаление ненужной ориентации в файле info.plist или Project → Info → Свойства пользовательской цели iOS.

Просто добавьте или удалите элемент ориентации из списка:

  • Поддерживаемая ориентация интерфейса для iPhone
  • Поддерживаемые ориентации интерфейса (iPad) для iPad

enter image description here