web-dev-qa-db-fra.com

Puis-je animer une image iOS8 LaunchScreen.xib

Question:
Existe-t-il un moyen d'animer quoi que ce soit dans le fichier LaunchScreen.xib d'un projet Xcode 6 à déployer pour iOS 8.1 ou version ultérieure?


Le contexte:
Je cherche à créer des animations simples pour transmettre l’activité ou pour distraire l’utilisateur pendant qu’il attend ...


Exemples:

  • Une barre de chargement
  • Indicateur d'activité
  • GIF animé
  • Déplacer une UIImage à travers l'écran
  • Faire pivoter une image
14
JThora

Nan.

L'image de lancement ne s'affiche que pendant la période entre le moment où l'utilisateur choisit de lancer votre application et le moment où votre application a réellement commencé à s'exécuter. Pendant cette période, votre application ne peut effectuer aucune action telle que l'exécution d'une animation. Elle n'est pas encore en cours d'exécution. L'image de lancement est simplement une image statique qui, lorsqu'elle est bien conçue, aide à donner à l'utilisateur l'impression que votre application est prête rapidement. 

(Certains développeurs ignorent le HIG et utilisent l'image de lancement pour fournir un écran de démarrage, parfois avec une présentation animée. Mais dans ce cas, l'écran de lancement est toujours une image statique et l'animation se produit une fois l'application démarrée. - la première image d'animation dessinée par l'application en cours correspond à l'apparence de l'image de lancement statique.)

Ce comportement n'a pas changé avec la fonctionnalité LaunchScreen.xib dans iOS 8 - il apparaît toujours uniquement avant que votre application ne soit réellement en cours d'exécution, il s'agit donc toujours d'une image statique. La fonction LaunchScreen.xib vous procure la possibilité de produire de manière adaptative une image de lancement pour différents styles et tailles de périphériques sans avoir à concevoir, rendre et expédier séparément dans votre ensemble d’applications différentes images pour chaque taille/orientation/etc.

Si votre application n'est pas prête à être utilisée au moment où elle prend le contrôle, demandez-vous si les tâches de "chargement" que vous effectuez à ce moment-là doivent être effectuées immédiatement ou si vous pouvez laisser l'utilisateur commencer à faire certaines choses. tout de suite et faire plus de travail d'installation sur un thread d'arrière-plan ou le reporter jusqu'à ce qu'il soit réellement nécessaire.

26
rickster

Je n’utilise pas souvent les écrans de démarrage, mais j’aimerais les ouvrir comme un livre.

En vérité, je ne suis pas un grand fan des écrans de démarrage et même Apple recommande d’utiliser un fichier default.png qui affiche les contrôles (sans texte) de l’application:

Afficher une image de lancement qui ressemble étroitement au premier écran de l'application. Cette pratique diminue le temps de lancement perçu de votre application.

Évitez d'afficher une fenêtre À propos ou un écran de démarrage. En général, essayez d'éviter toute expérience de démarrage empêchant les utilisateurs d'utiliser votre application immédiatement.

des directives HIG

Cependant, certaines personnes les aiment et une application en particulier a un écran de démarrage de Nice, Path 2.0. Lorsque vous ouvrez Path, vous êtes accueilli avec leur logo sur une version rouge de la texture de lin Apple qui s’ouvre comme un livre (ou un journal comme ce que Path considère être lui-même).

Vous pouvez obtenir la source de ce projet ici: https://github.com/jaysonlane/OpenBook

Avant de commencer, laissez-moi précéder cette déclaration par un avertissement: je suis très novice dans les animations de Cocoa, alors supportez-moi. Si vous remarquez du code inutile ou inefficace, veuillez laisser un commentaire et je vais le ranger.

Si vous n'avez pas vu l'animation, allez dans la boutique d'applications et prenez-en un exemplaire pour voir ce que nous essayons d'accomplir. J'ai créé un fichier png par défaut que nous pouvons utiliser intelligemment sous le titre Math (comme un livre de mathématiques qui s'ouvre, n'est-ce pas?). Vous pouvez le télécharger ici (rétine) et ici.

Pour commencer, laissez-moi vous expliquer «la supercherie» qui se cache derrière ce que nous allons faire: nous allons utiliser le système de démarrage par défaut normal pour afficher notre fichier default.png. Dans l'application déléguée, une fois l'application lancée, nous allons créer un UIImageView en plus de notre affichage de ce même fichier default.png. Nous allons ensuite animer ce UIImageView, pour le faire pivoter afin de révéler notre vue.

Alors allons-y:

Créer un nouveau projet, j'ai créé un en utilisant le modèle de vue unique, mais cela fonctionnera avec n'importe quoi. Allez-y et définissez votre default.png et [email protected] sur les images fournies. Pour ce faire, cliquez sur le projet dans le volet de navigation de gauche, cliquez sur la cible et faites défiler pour lancer les images:

Ouvrez votre AppDelegate.m et ajoutez le code suivant à la fonction didFinishLaunching de votre application ou didFinishLaunchingWithOptions de l'application:

//1. add the image to the front of the view...
UIImageView *splashImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[splashImage setImage: [UIImage imageNamed:@"Default"]];
[self.window addSubview:splashImage];
[self.window bringSubviewToFront:splashImage];

//2. set an anchor point on the image view so it opens from the left
splashImage.layer.anchorPoint = CGPointMake(0, 0.5);

//reset the image view frame
splashImage.frame = CGRectMake(0, 0, 320, 480);

//3. animate the open
[UIView animateWithDuration:1.0
                      delay:0.6
                    options:(UIViewAnimationCurveEaseOut)
                 animations:^{

                     splashImage.layer.transform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0);
                 } completion:^(BOOL finished){

                     //remove that imageview from the view
                     [splashImage removeFromSuperview];
                 }];

Trois choses se passent ici…

1) Nous créons un nouveau UIImageView et l’ajoutons en haut de la vue 2) Nous définissons un point d’ancrage sur le côté gauche de l’image pour l’ouvrir à partir de la gauche, puis nous réinitialisons le cadre à sa taille maximale. la vue 3) Nous animons UIImageView et le retirons de la vue à la fin.

C’est tout, c’est aussi simple.

Source: http://jaysonlane.net/tech-blog/2012/03/path-2-0-style-animation-splash-screen-default-png/

13
Lucas Fray Burchardt

Vous pouvez créer le fichier LaunchScreen.xib puis créer un réplica parfait sur lequel vous pouvez placer du code et créer une classe telle que LaunchScreenAnimator que vous pouvez appeler depuis votre délégué et qui dispose d’un délégué pour vous avertir lorsque l’animation est terminée

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    LaunchScreenAnimator *la=[LaunchScreenAnimator createWithDelegate:self];
    self.window.rootViewController=la;
    [self.window makeKeyAndVisible];

    [la startAnimation];

    return YES;
}

-(void) splashAnimationFinished:(LaunchScreenAnimator*)view
{
    [self startWithDashboardWindow]; // replace the current rootViewController with whatever you want
}
0
Catalin