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