cordova插件屏幕方向不适用于特定页面

cordova-plugin-screen-orientation not working on specific pages

本文关键字:适用于 不适用 插件 屏幕 方向 cordova      更新时间:2024-06-17

我只需要在一个视图上允许两个方向,但其他10个视图的其余部分应该锁定为纵向。我不介意通过将我的10个视图的控制器中的每一个都设置为锁定肖像来做这件乏味的事情。但我似乎无法让屏幕定向插件工作。

我使用CLI安装插件(成功安装)

然后这就是代码

config.xml:

<preference name="Orientation" value="default"/>

控制器:(这不起作用)

.controller('ProfileCtrl', function($scope, $state, $stateParams, $ionicHistory, $rootScope, $ionicPopup, $ionicPlatform) {
$ionicPlatform.ready(function() {
    screen.lockOrientation('landscape');
});

提前感谢:)

您应该先检查是否加载了Cordova。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    screen.lockOrientation('portrait');
}

或者由于您使用的是Ionic:

$ionicPlatform.ready(function() {
    screen.lockOrientation('portrait');
});

(对于后者,请确保注入$ionicPlatform依赖项。)

使用以下代码,它将按预期工作

screen.orientation.lock('landscape');

查看本教程。它帮助我解决了同样的问题:https://topherpedersen.blog/2019/09/26/cordova-screen-orientation-lock-plugin-not-working/

// Lock Device Orientation
function lockDeviceOrientationCallback() {
    // set to either landscape
    screen.orientation.lock('portrait');
    console.log("locking device orientation...");
}
document.addEventListener("deviceready", lockDeviceOrientationCallback, false);

该解决方案类似于上面的答案,即在设备准备就绪时设置事件侦听器。我发现这个效果更好,因为cordova已经有了一个设备就绪的监听器,我似乎可以依靠它

我把它放在Interval中,它成功了:

let ticks = setInterval((timer),10);
function timer() {
    function lockDeviceOrientationCallback() {
        // set to either landscape
        screen.orientation.lock('portrait');
        console.log("locking device orientation...");
    }
    document.addEventListener("deviceready", lockDeviceOrientationCallback, false);
}