cordova - Ionic 2 - Landskapsläge aktiverat endast för iPad
Jag kan ställa in orienteringen till endast porträtt i config.xml på följande sätt:
<preference name="Orientation" value="portrait"/>
Men hur kan jag tillåta landskapsläge för iPad-versioner, samtidigt som det fortfarande är avstängt för iPhone som ovan?
Svar #1
Enligt Mike Harrison från Ionic säger han:
Förutom att manuellt rotera enheten, inte riktigt. Detta skulle vara något du skriver ett plugin för för att ändra huvudappen-vyn i Cordova
Men det finns ett plugin från Ionic 1. Titta på det. Så småningom kan du använda det i Ionic 2 också.
Med detta plugin kan du göra något som:
if(/(ipad)/i.test(navigator.userAgent)) {
//THIS IS THE PLUGIN IONIC 1 CODE
$scope.changeOriantationPortrait = function() {
screen.lockOrientation('portrait');
}
}
Svar #2
Du kan ta bort en inställning från config.xml och definiera den genom ett inbyggt plugin för skärmrotation
Sedan i app.component.ts lås orienteringen för telefoner:
// check if platform is not a tablet
if (platform.is('cordova') && !platform.is('tablet')) {
// lock orientation to only portrait mode
this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT);
// set screen orientation to 'portrait'
globalProvier.screenOrientation = this.screenOrientation.ORIENTATIONS.PORTRAIT;
} else { // if it's tablet
// set device type to 'tablet'
globalProvier.deviceType = platform.platforms()[3];
// set current orientation type ('portrait-primary' or 'landscape-primary' or 'portrait-secondary' or landscape-secondary)
globalProvier.screenOrientation = this.screenOrientation.type;
// set listener on changing orientation
this.screenOrientation.onChange().subscribe(
() => {
globalProvier.screenOrientation = this.screenOrientation.type;
console.log("Orientation Changed to: ", this.screenOrientation.type);
}
);
}
Nu kan du dynamiskt justera din layout beroende på surfplattans orientering med globalProvier.screenOrientation-variabeln. Lägg till klasser eller använd *ngIf i mallarna.
*ngIf='this.globalProvider.screenOrientation == "landscape-primary" || <h3 *ngIf='this.globalProvider.screenOrientation == "landscape-primary" || this.globalProvider.screenOrientation == "landscape-secondary"'>Orientation: landscape</h3>
