2012-02-07 7 views
6

Quiero suplantar la sensación de que la pantalla principal de bienvenida se desvanece cada vez que se llama applicationDidBecomeActive, pero no está funcionando. ¿Qué estoy haciendo mal?IOS se desvanece la pantalla de bienvenida (compatible con el iPhone 5)

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(IS_IPHONE_5) 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; 
    else 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 

    [self.window.rootViewController.view addSubview:splash]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         splash.alpha = 0; 
        } 
        completion:^(BOOL finished) { 
         [splash removeFromSuperview]; 
        }]; 
} 

Luego debe definir lo siguiente en alguna parte. Utilizo el proyecto .pch pero puede usar su encabezado si lo desea.

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

Respuesta

3

Si ese es realmente su código, es probable que tenga un error ortográfico en el nombre de la imagen. (De lo contrario, díganos qué significa "no funciona").

Además, la pantalla de bienvenida no aparece normalmente cada applicationDidBecomeActive:. didFinishLaunchingWithOptions: es el momento en que sabe que se ha iniciado y que la pantalla de bienvenida se mostró en su nombre.

+1

Extraño, en el simulador, el splash está activo cada vez, pero en el dispositivo solo está en la carga inicial. bueno saber. – Jacksonkr

2

Su código se ve bien; Lo hago en varias aplicaciones.

Sin embargo, desea hacer esto como parte de applicationDidFinishLaunching:options: y no en applicationDidBecomeActive:. Solo tiene sentido desvanecerse la pantalla de inicio cuando se muestra, que es solo cuando la aplicación se inicia y no se está ejecutando. Cuando su aplicación se activa, es posible que haya estado en segundo plano, es decir, que ya se haya iniciado, por lo que desaparecer la pantalla de bienvenida en este caso no tiene sentido.

O, ¿deseaba que su pantalla de presentación apareciera SIEMPRE cuando se activa, incluso si se reanuda desde el fondo desde un estado suspendido?

3

Intente agregarlo directamente a su ventana en lugar de la vista rootViewController.view.

[self.window addSubview:splash]; 

También es posible que deba girar la imagen con view.transform para alinearla con la imagen de inicio.

6

me parece, desde iOS6 se obtiene una buena transición haciendo esto

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIView animateWithDuration:0.2 
          delay:0 
         options: UIViewAnimationCurveEaseIn 
        animations:^{ 
         self.window.viewForBaselineLayout.alpha = 0; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

    return YES; 
} 

luego inmediatamente en el inicio de

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    [UIView animateWithDuration:0.5 
          delay:0 
          options: UIViewAnimationCurveEaseOut 
         animations:^{ 
         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

Da una cruz fadeish partir de la pantalla de carga a la ya cargada pantalla de la aplicación.

+0

ha esta es la solución correcta –

Cuestiones relacionadas