Swift 5 - предотвращение авторотации по условию - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь контролировать вращение устройства, чтобы оно вращалось только при выполнении определенного условия.

Что я пробовал

  1. viewWillTransitionTo - Я могу переопределить этот метод в ViewController.swift, который почти работает. Я могу выполнить UIDevice.current.setValue(UIDeviceOrientation.portrait.rawValue, forKey: "orientation"), который действительно установит портретную ориентацию, но только после того, как он уже будет повернут. Что происходит, так это то, что экран поворачивается, а затем немедленно поворачивается обратно.
  2. Отключение всех ориентаций, кроме 1 - В настройках проекта в разделе Общие-> Информация о развертывании-> Ориентация устройства я могу указать разрешенные ориентации дисплея. Я попытался установить только портретную ориентацию, а затем использовать метод viewWillTransitionTo, но этот метод не вызывается в результате отключения ориентации.

Возможные решения

  1. Я знаю, что можно получить доступ к необработанным значениям из акселерометра, который может обеспечить ориентацию устройства. Поэтому я думаю, что можно написать код, который говорит, что если вращение устройства превышает пороговое значение, тогда проверяйте условие, чтобы увидеть, должны ли мы вращаться или нет. Я новичок в Swift и не знаю, как это сделать.
  2. Использование UIApplication.shared.windows.first?.windowScene?.interfaceOrientation?

Есть ли более простой способ контролировать ориентацию экрана?

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