Ionic 3 - блокировка ориентации экрана не работает

Мое требование состоит в том, чтобы приложение было установлено только в портретном режиме на телефонах и только в альбомном режиме на вкладках, начиная с заставки. Пробовал с плагином Screen Orientation, доступным на ionic native, но у меня не сработало.

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

На app.component.ts:

constructor(..., private screenOrientation: ScreenOrientation) {
    platform.ready().then(() => {

        this.screenOrientation.lock('landscape');
        ScreenOrientation.lockOrientation('landscape');
        screen.msLockOrientation('landscape');
    this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.LANDSCAPE);

Я пробовал все вышеперечисленные строки и на home.ts, но они не работали. Когда я установил:

console.log(this.screenOrientation.type); 

Это позволит правильно распечатать ориентацию экрана в журналах. Всякий раз, когда я устанавливаю метод подписки, он тоже работает и предупреждает меня всякий раз, когда меняется ориентация экрана, а это означает, что все операторы импорта работают отлично и что я могу правильно получить доступ к методам плагина. Я могу воспроизвести эту проблему как на Android, так и на iOS. Любая помощь будет принята с благодарностью.

Сведения о платформе/библиотеке/зависимости:

"@angular/common": "4.1.3",

«ионно-угловой»: «3.6.0»,

«ионный»: «3.7.0»


person Mohammed Azhar    schedule 10.08.2017    source источник


Ответы (2)


В вашем config.xml вы можете попробовать добавить эту строку, чтобы ваша ориентация блокировалась в ландшафтном режиме.

<preference name="orientation" value="landscape" />
person Jakegarbo    schedule 11.08.2017
comment
Это работает, когда мне нужно заблокировать ориентацию для всех устройств. Однако мне нужно, чтобы он был портретным только для телефонов и ландшафтным только для вкладок. - person Mohammed Azhar; 11.08.2017

Последний вариант должен работать. Я использую его следующим образом, и он работает:

Для планшета: this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.LANDSCAPE);

Для мобильных устройств: this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT);

Попробуйте удалить модуль ScreenOrientation, удалите платформу, а затем снова добавьте платформу и снова добавьте модуль ScreenOrientation. Это также может быть устройство, на котором вы отлаживаете

person deanwilliammills    schedule 21.05.2018