2012-09-16 29 views
21

estoy actualizando mi PhoneGap iOS aplicación para que sea compatible con el iPhone 5.iPhone 5 splashscreen no se muestran correctamente - Phonegap

estoy escondido manualmente la pantalla de bienvenida después de mi aplicación se ha inicializado.

Al simular iPhone 5: cuando se inicia la aplicación, muestra la pantalla de bienvenida correcta ([email protected]) (aquí "el 5") pero rápidamente la oculta y muestra la pantalla de bienvenida del iPhone 4 (aquí) el 4 "). El 4 no cubre toda la aplicación, lo que muestra las barras superior e inferior de la aplicación de inicialización.

No estoy del todo seguro de cómo funciona, pero puedo pensar en dos escenarios posibles: 1) Ambas imágenes se muestran simultáneamente pero por alguna razón el 5 oculta automáticamente mientras el 4 espera la llamada de la aplicación para ocultar . 2) En algún momento, al deshabilitar la ocultación manual de la pantalla emergente, Phonegap cambia la pantalla de bienvenida "verdadera" por una pantalla "falsa" que se muestra hasta que la llamada javascript desde la aplicación y el teléfono apenas pueda mostrarse correctamente después de este cambio.

¿Alguien más ha encontrado y/o resuelto esto?

ACTUALIZACIÓN: Se intentó eliminar y agregar todas las imágenes splash nuevamente, pero fue en vano. Traté de eliminar las imágenes más pequeñas (el 4 y su versión no retina) pero incluso sin las más pequeñas presentes en cualquier parte del proyecto, ¡recibo el mismo error!

ACTUALIZACIÓN 2: Cordova 2.2.0 ha sido liberado, fijando así este problema de acuerdo con: http://shazronatadobe.wordpress.com/2012/10/27/whats-new-in-cordova-ios-2-2-0/

Por lo tanto, la solución recomendada por lo tanto sería actualizar su aplicación para utilizar Cordova 2.2.0, si eso Por alguna razón no es posible, las soluciones se proporcionan a continuación.

+2

¿Cambió el 'Lanzamiento de imágenes' en su proyecto XCode? ¿Pegaste manualmente tus imágenes splash (en 'your_project'->' Resources'-> 'splash')? – Littm

+0

¡Sí! Intenté eliminar y volver a leer todas las imágenes splash, pero fue en vano – Hessius

+0

Creo que esto es realmente un error en Cordova/PhoneGap: parece volver a cargar manualmente la imagen de la pantalla de bienvenida, y cuando no está en un iPad se carga por defecto la imagen "Predeterminada" (el splash de tamaño clásico). Necesita ser actualizado para verificar el tamaño de la pantalla, supongo ... – Brion

Respuesta

19

que he recibido dos respuestas en otros lugares, pero no he tenido tiempo para probarlos sin embargo: From user T123 in the Phonegap Google Group: abierta CDVViewController.m - encontrar - (void) ShowSplashScreen

cambio sobre la línea: 690

Desde:

else // not iPad 

{ 

    orientedLaunchImageFile = launchImageFile; 

} 

Para:

else // not iPad 

{ 

    orientedLaunchImageFile = launchImageFile; 

    /* Edited for 4-inch IP5 */ 

    if(screenBounds.size.height == 568) 

     orientedLaunchImageFile = [NSString stringWithFormat:@"%@-568h", launchImageFile]; 

} 

Y de Brion, quien comentó anteriormente, la solicitud de extracción siguiente, hoepfully a ser incorporados en Cordova 2.2.0: https://github.com/apache/incubator-cordova-ios/pull/50

EDIT: Probado solución de T123 y se está trabajando para mí! EDIT2: ¡La solución de Brion se incorporó a Cordova 2.2.0 que ahora ha sido lanzada!

Edit3: Sólo la actualización para resaltar un comentario para los que no se molestó leerlos:

Para Phonegap versión 1.4.1, logré solución de Hessius a funcionar así: He copiado los métodos ShowSplashScreen, isIPad, resolveImageResource y la definición #define degreesToRadian (x) (M_PI * (x)/180.0) del archivo PGViewController.m a mi archivo MainViewController.m. Después de eso, XCode se quejó de que estaba asignando valores a los atributos de solo lectura, así que edité el archivo de encabezado en PhoneGap.framework para hacer esos dos atributos readwrite. También cambié launchImageFile desde el código de Hessius a @ "Default". Esto hizo el truco para mí.- Joe Dyndale 8 de octubre de 12 a 15:23

+0

¿Cómo se usa esto? archivo actualizado en su proyecto PhoneGap en xcode? Parece que es un archivo externo al proyecto en sí. Mi experiencia al agregar este código y ejecutarlo en el simulador de iPhone5 no cambió nada. –

+1

¿Estás usando cordova 2.0? Cordova se agrega como un subproyecto "CordovaLib.xcodeproj" si expande este proyecto, verá la carpeta "Clases", dentro de esta carpeta hay una subcarpeta "Cleaver", aquí encontrará el ya mencionado CDVViewController.m - Haga los cambios aquí , guardar y listo! – Hessius

+0

Estoy usando 1.8.1 - entonces tal vez estoy de suerte? –

1

La solución para esto (https://issues.apache.org/jira/browse/CB-1482) no está fuera hasta el 2.2. Es muy arriesgado utilizar la versión inestable y no me molesta para compilar desde el código fuente a mí mismo, así que he intentado este truco:

En MainViewController.m

- (void) showSplashScreen 
{ 
    CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
    // HACK: PhoneGap pre-2.2 does not support iphone5 splash image well, so we just skip it  
    if (screenBounds.size.height == 568) { 
     return; 
    } 
    [super showSplashScreen]; 
} 

Esto desactivará ShowSplashScreen para iPhone5 para evitar la imagen de lanzamiento más corta agregada por PhoneGap (la imagen de inicio inicial de iOS se muestra bien). Funcionó para mí y apenas noté ninguna diferencia pirateando showSplashScreen para iPhone5.

0

Blanco Flicker

Estaba teniendo el mismo problema con Cordova 2.2. Creo que vale la pena mencionar que tuve que dar un paso adicional para que la pantalla de bienvenida se procesara correctamente.

Hice los cambios que se incluyeron en @Hessius answer. Pero noté que se produjo un flash de pantalla en blanco después de que apareció la pantalla de presentación.

En el método (void) ShowSplashScreen otros pueden ver

if (launchImageFile == nil) { // fallback if no launch image was specified 
//  if (CDV_IsIPhone5()) { 
//   // iPhone 5 or iPod Touch 6th-gen 
//   launchImageFile = @"Default-568h"; 
//  } else { 
     launchImageFile = @"Default"; 
//  } 
} 

Al comentar el código de salida (o eliminación) que he comentado, eliminado el parpadeo blanco que estaba viendo en el medio de carga de aplicaciones y pantalla de inicio.

Espero que esto ayude a alguien!

Cuestiones relacionadas