0

J'ai repris un projet en utilisant AngularJS, Ionic et Bootstrap pour créer des applications hybrides pour les appareils mobiles.La rotation de l'écran de démarrage ne se déroulait pas en mode paysage sur les appareils iOS

Avant la mise à niveau vers XCode 7, tout s'est bien passé. J'ai mis à jour mon code HTML, CSS et JS dans l'éditeur, a couru grunt run:ios pour créer le code de la plate-forme et a ouvert XCode. De là, j'ai construit le fichier .ipa sans aucun problème (juste avec quelques avertissements, qui pourraient être ignorés).

Cependant, depuis l'utilisation de XCode 7 (nécessaire pour les appareils iOS 8 et iOS 9), l'écran plat ne s'affiche pas correctement. Signification: En mode Portrait.

Note 1: L'écran de démarrage et l'application doivent être en mode paysage uniquement.

Remarque n ° 2: Lors de l'exécution grunt run:android, tout se passe bien sur l'appareil Android.

Par 34919547 J'ai mis à jour le plugin cordova-plugin-splashscreen à la version 3.1.0 comme suggéré ici. J'ai également changé de référence, car l'ancienne version était codée en dur dans un fichier de configuration.

Maintenant, l'écran de démarrage apparaît d'abord par erreur en mode Portraid, puis (après le délai défini) en mode paysage comme il se doit. Donc, les choses vont un peu mieux, mais pas de 100%.

Comment obtenir le splash-screen affiché entièrement en mode paysage?

+0

Vous dites qu'il ya un délai d'attente de defiend avant que l'écran spalsh passe en mode paysage. Ma première pensée serait d'aller dans le plugin cordova et de changer le timeout. – mdarmanin

Répondre

0

Avez-vous essayé d'annuler cette ligne de code?

{ 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     Class class = [self class]; 

     SEL originalSelector = @selector(shouldAutorotate); 
     SEL swizzledSelector = @selector(splash_shouldAutorotate); 

     Method originalMethod = class_getInstanceMethod(class, originalSelector); 
     Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); 

     BOOL didAddMethod = class_addMethod(class, 
              originalSelector, 
              method_getImplementation(swizzledMethod), 
              method_getTypeEncoding(swizzledMethod)); 

     if (didAddMethod) { 
      class_replaceMethod(class, 
           swizzledSelector, 
           method_getImplementation(originalMethod), 
           method_getTypeEncoding(originalMethod)); 
     } else { 
      method_exchangeImplementations(originalMethod, swizzledMethod); 
     } 
    }); 
} 

Essayez annuler comme ceci:

{ 
    /* 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     Class class = [self class]; 

     SEL originalSelector = @selector(shouldAutorotate); 
     SEL swizzledSelector = @selector(splash_shouldAutorotate); 

     Method originalMethod = class_getInstanceMethod(class, originalSelector); 
     Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); 

     BOOL didAddMethod = class_addMethod(class, 
              originalSelector, 
              method_getImplementation(swizzledMethod), 
              method_getTypeEncoding(swizzledMethod)); 

     if (didAddMethod) { 
      class_replaceMethod(class, 
           swizzledSelector, 
           method_getImplementation(originalMethod), 
           method_getTypeEncoding(originalMethod)); 
     } else { 
      method_exchangeImplementations(originalMethod, swizzledMethod); 
     } 
    }); 
    */ 
} 

Vous pouvez le trouver dans: cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m

+0

Etrange: Il n'existe aucun dossier appelé ios à ce stade. D'autres comme Android, navigateur ou Ubuntu ou là. Une (autre) idée? Je suis honnêtement confus maintenant ... – Joey

+0

ok bien vous devriez avoir ce dossier sinon votre plugin est probablement incomplet. Comment avez-vous installé le plugin? – mdarmanin

+0

J'ai corrigé le problème avec le dossier/ios manquant en restaurant les fichiers pertinents à partir de la sauvegarde (pas sûr cependant, pourquoi ils avaient été supprimés, mais de toute façon ...). Cependant la solution fournie de commenter le code ne fonctionne pas: Même situation qu'avant. – Joey