2010-03-17 10 views

Respuesta

26

Debe dejar que la aplicación comience como de costumbre y luego hacer que la primera vista que aparece tenga la misma imagen que la pantalla de bienvenida. Inicie un temporizador y luego reemplace esa vista con la vista raíz de la aplicación real después de unos segundos.

Demorar deliberadamente el lanzamiento real de la aplicación es un gran no-no.

+10

+1 para el regaño ... los usuarios odian las pantallas de bienvenida. –

+6

Al igual que Apple: http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG/HandleTasks/HandleTasks.html # // apple_ref/doc/uid/TP40006556-CH16-SW2 "Evite mostrar una ventana Acerca de, una pantalla emergente o proporcionar otro tipo de experiencia de inicio que impida que las personas usen su aplicación de inmediato". –

+4

Sheesh, solo preguntando. Si Apple tiene un problema, ellos pueden regañarme a ellos mismos. Ellos son bastante capaces. :) – Moshe

1

Esta pregunta es similar: splash screen like tap tap revenge 3

Básicamente, en su applicationDidFinishLaunching :, añadir una vista de la imagen en la parte superior de otras vistas que contienen su Default.png.

11

ACTUALIZACIÓN: ¡No en serio, NO HAGA esto!

O nos la función C

sleep(9); 

Poniendo esto en applicationDidFinishLaunching: hará que se programa para hacer una pausa durante 9 segundos, cualquier otro número entero puede ser incorporada tan bien.

EDIT: He aprendido mucho el año pasado. No hagas esto La razón es que el trampolín detendrá automáticamente el lanzamiento de la aplicación si tarda demasiado. Ese momento está mal documentado, por lo que incluso un segundo puede dar como resultado que la aplicación falle.

+0

9 es waaay a largo, pero tal vez un segundo. ¿Puedo poner un flotador (es decir: 1.5)? – Moshe

+0

Estaba tirando un número. Puedes usar cualquier int que quieras, pero tiene que ser un int. –

+2

-1. Nunca ponga una gran demora o nada de tiempo en la aplicaciónDidFinishLaunching. Use un temporizador en otro hilo o algo similar; pero regrese rápidamente de applicationDidFinishLaunching. Consulte http://stackoverflow.com/questions/169470/does-the-iphone-timeout-if-a-function-takes-too-long-to-execute – occulus

1

Consulte la explicación anterior sobre por qué probablemente no debería retrasar la carga de su aplicación de esta manera. Pero si tiene un escenario en el que dormir por una duración corta sería preferible a la sobrecarga de cambiar una vista, use NSThread's sleepForTimeIntervale en lugar de sleep(). Es más compatible con el marco y tiene un control más granular sobre el tiempo de inactividad:

[NSThread sleepForTimeInterval:0.75] 
+0

El problema con este enfoque es que bloquea todo. Si presiona el botón de inicio durante el intervalo de suspensión, no pasará nada. Pruébelo con un intervalo de sueño más grande y es más obvio. – greenisus

0

Tuve una situación en la que el cliente tuvo que demorar la imagen de inicio. Por lo tanto, este fue mi solución ..

- (void)applicationDidBecomeActive:(UIApplication *)application 

{

UIImageView *defaultImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]]; 
[self.window addSubview:defaultImageView]; 
sleep(2); 
[defaultImageView removeFromSuperview]; 
[defaultImageView release]; 
/* 
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
*/ 

}

+0

funciona solo en el simulador no en el dispositivo :( –

0

Se puede utilizar dormir método para obtener este resultado "

sleepForTimeInterval

", si usted quiere conseguirlo lanzar el tiempo, me gusta:

- (void) applicationDidFinishLaunching:(UIApplication*)application 
{ 
    [NSThread sleepForTimeInterval:8.0]; 
} 

que retrasará el lanzamiento por 8 segundos

Advertencia: Pero no es recomendado por Apple, como lo hará la watchdod acerca mucho tiempo para la carga de su aplicación, puede matar su aplicación. Pero en caso de que lo necesite para obtener una captura de pantalla específica o para un uso interno, puede utilizarlo para resolverlo, pero nunca en el envío de la aplicación.

Cuestiones relacionadas