将插件更新到版本1.4.2后,它的屏幕锁定开始在iPad中运行。从纵向模式,我尝试通过执行screen.lockOrientation('landscape-primary')
以横向模式锁定屏幕。屏幕会旋转到横向模式。但它并没有占据全屏宽度。旋转似乎不会更改视口宽度和高度。
纵向视图中的屏幕尺寸:
Height: 1004 px
Width: 768px
执行screen.lockOrientation('landscape-primary')
横向视图中的屏幕尺寸(仍然相同):
Height: 1004 px
Width: 768px
以下是我的配置:
cordova version: 6.0.0
ios version: 9.3.4
screen plugin version: 1.4.2
更新
我遇到的问题与这里提到的问题相同: https://github.com/gbenvenuti/cordova-plugin-screen-orientation/issues/1
我尝试了以下配置,仍然无法正常工作。
<platform name="ios">
<preference name="Orientation" value="all" />
</platform>
我在元视口中没有width=device-width
或height=device-height
。
答案 0 :(得分:1)
cordova-plugin-screen-orientation似乎没有调整Web视图的大小。我遇到了同样的问题。
解决此问题的快速入侵是调用另一个插件,该插件可以正确实现webview的大小调整。例如:安装cordova-plugin-statusbar并在锁定状态栏后快速隐藏/显示状态栏。繁荣!您的方向已锁定且您拥有正确的网页浏览量。
screen.lockOrientation('portrait');
StatusBar.hide();
StatusBar.show();
答案 1 :(得分:0)
基于@Rolando回答,这就是我所做的,因为它必须在lockOrientation和statsuBar刷新之间有一个短暂的延迟:
var interval;
screen.lockOrientation('landscape');
if(ionic.Platform.isIPad()){
// Ipad only, check every 10ms if screen size is refresh or do it with statusBar
interval = $interval(testLandscapeWidth, 10);
}else{
// Other ios and android
doProcess();
}
function testLandscapeWidth(){
if(parseInt($window.innerWidth) < parseInt($window.innerHeight)){
StatusBar.hide();
StatusBar.show();
}else{
$interval.cancel(interval); // When scree size is refresh, cancel interval
doProcess();
}
}
function doProcess(){
// Your process
}
我使用一个间隔而不是一个计时器来确保它做了很多时间和成功,这只是一次并且无法刷新。我尝试了10ms,100ms,500ms,依赖于ipad的健康状况是否快速,有时状态栏刷新没有成功。所以,对于间隔,它是。