3

我正在使用 PhoneGap 开发适用于 Android、iOS 和 Windows Phone 的应用程序。我有一个带有图表的页面,如果用户以横向旋转设备,我想全屏显示它。

问题是整个应用程序必须在纵向上被阻止,因此横向必须仅在此图形页面上可用。

我有两种可能性:


1)在整个应用程序中授权纵向/横向。如果用户在图形以外的任何其他页面上,并且如果他将设备置于横向,则取消旋转并保持纵向模式。

我想我必须有办法在这些事件之前捕捉到一个事件:

window.addEventListener("orientationchange", orientationChange, false);
window.addEventListener("resize", resize, false);

2)在纵向阻止整个应用程序。如果用户在图形页面上,添加一个按钮,允许横向旋转该页面以显示图形,然后返回纵向模式。

我发现这个但只对 Android 有用:设置屏幕方向


那么,有没有办法做这些可能性之一?

谢谢

4

2 回答 2

2
window
    .matchMedia('(orientation: portrait)')
    .addListener(function (m) {
        console.log('a');
    });

window.addEventListener('resize', function () {
    console.log('b');
});

window.addEventListener('orientationchange', function () {
    console.log('c');
});

// https://github.com/gajus/orientationchangeend
viewport.on('orientationchangeend', function () {
    console.log('c');
});

这些事件将按字母顺序触发。

于 2014-11-11T19:24:15.187 回答
1

iOS 解决方案:

在你的 javascript 文件中输入这个函数

function shouldRotateToOrientation (rotation) {
switch (rotation) {
        case 0:     
          if(condition){
             return true;
          }else{
             return false;}
        case 90:
          return false;
        case -90:
          return false;
        case 180:
          return false;
    }
}

此函数覆盖cordova lib中的内置函数。

于 2013-09-25T09:54:49.030 回答