2016-08-25 2 views
1

После обновления плагина до версии 1.4.2 он запустил блокировку экрана в iPad. В режиме портрета я попытался заблокировать экран в альбомном режиме, выполнив screen.lockOrientation('landscape-primary'). Экран поворачивается в альбомный режим. Но он не занимает полную ширину экрана. Похоже, что поворот не изменяет ширину и высоту порта просмотра.Ориентация экрана плагина Cordova 1.4.2 (для IOS) не меняет ширину окна просмотра

Размер экрана в вертикальной ориентации:

Height: 1004 px 
Width: 768px 

После выполнения screen.lockOrientation('landscape-primary')

Размер экрана в ландшафтном виде (Still же):

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 в мета-просмотра.

enter image description here

+0

вы нашли решение этой :( –

ответ

1

Cordova-плагин-экран ориентации не кажется, что будет изменение размера веб-просмотра. У меня была такая же проблема.

Быстрый взлом, который исправит это, чтобы вызвать другой плагин, который правильно выполняет изменение размера веб-представления. Например: установите панель статуи corova-plugin-status и после блокировки строки состояния выполните быстрое скрытие/показ строки состояния. Boom! ваша ориентация заблокирована И у вас есть правильный размер веб-просмотра.

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

Лучший ответ я нашел, чтобы решить эту проблему Однако, это действительно большой «взломать» ... Если вы можете добавить условие на Ipad устройств с ионными..: если (ионный.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 
} 

Я использую интервал и не таймер чтобы быть уверенным, что он делает это много времени и успехов, это всего лишь 1 раз и не обновляется. Я пытался с 10 мс, 100 мс, 500 мс, быстро зависит от состояния ipad или нет, иногда обновление строки состояния не удавалось. Итак, с интервалом, это так.

 Смежные вопросы

  • Нет связанных вопросов^_^