2011-05-29 4 views
0

Je veux créer un logo animé qui sert d'écran de démarrage pour mon application iphone/ipad. Je pense à montrer default.png, qui passe ensuite en .mp4 (où la première image du .mp4 correspond à default.png), joue un film de 3 secondes, disparaît et charge mon application.iPhone/iPad: écran de démarrage animé?

Quelqu'un a-t-il une expérience avec ceci? Et mon idée (en utilisant .mp4) est-elle le meilleur moyen d'y parvenir? Aussi, Apple est-elle "cool" avec ça?

Merci d'avance.

+2

je suggère de repenser ce plan, parce que 3 secondes logo animé (au-dessus de l'attente est déjà sur l'écran de démarrage statique) entraînerait probablement la moitié de la les gens à quitter votre application avant même que le chargement est terminé. – jhocking

+0

Je fais une pause de 2-3 secondes de toute façon (et je l'ai fait avec succès dans plusieurs applications), donc au lieu d'un écran statique, je suppose que l'utilisateur préfèrerait une animation esthétique. – foreyez

+0

De nombreuses applications utilisent des animations/films similaires. Je pense que tu vas bien. – kball

Répondre

2

Oui, vous pouvez absolument faire cela et oui Apple est cool avec elle.

Vous pouvez utiliser MPMoviePlayerController, le placer sous un UIImageView avec l'image de lancement et lorsque le film est chargé et prêt à partir, supprimer le UIImageView et lire le film. Mais compte tenu de la nature parfois délicate de MPMoviePlayerController, vous avez besoin de chronométrer les choses avec soin. Voici un extrait que vous pouvez utiliser comme point de départ:

-(void)setupMovie { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieComplete:) 
               name:MPMoviePlayerPlaybackDidFinishNotification object:self.playerView]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMovie:) 
               name:MPMoviePlayerLoadStateDidChangeNotification object:self.playerView]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showMovie:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.playerView]; 

    [self.playerView setContentURL:[[NSBundle mainBundle] URLForResource:@"movie" withExtension:@"mov"]]; 
    [self.playerView prepareToPlay]; 
} 


-(void)playMovie:(NSNotification *)notification { 
    if (self.playerView.loadState == MPMovieLoadStatePlayable | MPMovieLoadStatePlaythroughOK) { 
     [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:notification.object]; 
     [self.playerView play];  
    } 
} 

-(void)showMovie:(NSNotification *)notification { 
    if (self.playerView.playbackState == 1) { 
     [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:notification.object]; 
     // should update this to new UIView anim methods 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:.2]; 
     self.splashScreen.alpha = 0; 
     [UIView commitAnimations];  
    } 
} 
0

Répondre au UIApplicationDidFinishLaunchingNotification. Je suis d'accord avec @jhocking que vous devriez considérer si une telle attente est la meilleure UX, mais si c'est le cas, c'est une tâche assez simple.

Questions connexes