2016-08-25 65 views
1

將插件更新到版本1.4.2後,屏幕鎖定開始在iPad中工作。在肖像模式下,我試圖通過執行screen.lockOrientation('landscape-primary')來鎖定橫向模式的屏幕。屏幕旋轉到橫向模式。但它不佔用全屏幕寬度。旋轉似乎不會改變視圖端口的寬度和高度。Cordova插件屏幕方向1.4.2(對於IOS)不會更改視口寬度

屏幕尺寸在縱向視圖:

Height: 1004 px 
Width: 768px 

以下是我的配置::

Height: 1004 px 
Width: 768px 

在橫向視圖(靜像相同)執行screen.lockOrientation('landscape-primary')

屏幕尺寸後

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-widthheight=device-height

enter image description here

+0

你有沒有發現這個:( –

回答

1

科爾多瓦 - 插件屏幕取向似乎沒有被調整的網絡視圖。我遇到了同樣的問題。

解決這個問題的一個快速入門就是調用另一個插件,它能夠正確地調整webview的大小。例如:安裝cordova-plugin-statusbar,鎖定狀態欄後快速隱藏/顯示狀態欄。繁榮!你的方向被鎖定,你有正確的網頁視圖大小。

screen.lockOrientation('portrait');  
StatusBar.hide(); 
StatusBar.show(); 
+0

最佳答案我找到解決這個問題的解決方案 然而,這真是一個大大的「黑客」 ...... 如果可以的話,在iPad設備上添加一個條件隨着離子。: if(ionic.Platform.isIPad()... –

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的健康狀況是否快,有時狀態欄刷新沒有成功。所以,這個時間間隔就是這樣。