55 votes

Quels sont les méthodes d'animation basées sur des blocs dans l'iPhone OS 4.0 ?

Je suis en train d'implémenter un jeu en utilisant le SDK iPhone OS 4.0 (iOS4 ?). Dans les versions précédentes du SDK, j'ai utilisé les fonctions [UIView beginAnimations:context:] et [UIView commitAnimations] pour créer des animations. Cependant, lorsque je regarde la documentation des fonctions dans la version 4.0, je vois ce commentaire.

L'utilisation de cette méthode est déconseillée dans l'iPhone OS 4.0 et ultérieur. Vous devriez plutôt utiliser les méthodes d'animation basées sur les blocs.

Vous pouvez le trouver ici : http://developer.apple.com/iphone/library/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/commitAnimations

Ma question est, qu'est-ce que les animations basées sur les blocs dans l'iPhone OS 4.0 ? Je pensais que les fonctions beginAnimations:context: et commitAnimations étaient utilisées pour créer des blocs d'animation..

117voto

ohho Points 17243

J'ai posté un exemple dans mon blog:

    CGPoint originalCenter = icon.center;
    [UIView animateWithDuration:2.0
            animations:^{ 
                CGPoint center = icon.center;
                center.y += 60;
                icon.center = center;
            } 
            completion:^(BOOL finished){

                [UIView animateWithDuration:2.0
                        animations:^{ 
                            icon.center = originalCenter;
                        } 
                        completion:^(BOOL finished){
                            ;
                        }];

            }];

Le code ci-dessus animera une UIImageView* (icon) dans une animation de 2 secondes. Une fois terminée, une autre animation déplacera l'icône vers sa position d'origine.

42voto

drawnonward Points 35444

Si vous suivez ce lien et remontez un peu, vous verrez les nouvelles méthodes d'animation propres à iOS4.

animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:

Il existe également quelques méthodes de transition connexes. Pour chacune d'entre elles, l'argument animations est un objet bloc :

animations
Un objet bloc contenant les modifications à apporter aux vues. C'est ici que vous changez de manière programmatique toutes les propriétés animables des vues de votre hiérarchie de vues. Ce bloc ne prend pas de paramètres et n'a pas de valeur de retour. Cet argument ne doit pas être NULL.

Les objets blocs font partie de la Programmation Concurrente

20voto

ledererc Points 520

Voici un exemple très simple. Le code fait simplement disparaître en fondu une UIView et la cache une fois l'animation terminée :

[UIView animateWithDuration:1.0 
                      delay:0.0 
                    options:UIViewAnimationOptionCurveEaseInOut 
                 animations:^ {
                     bgDisplay.alpha = 0.0;
                 } 
                 completion:^(BOOL finished) {
                     bgDisplay.hidden = YES;
                 }];

ou avec un formatage différent :

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^ {
    bgDisplay.alpha = 0.0;
} completion:^(BOOL finished) {
    bgDisplay.hidden = YES;
}];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X