web-dev-qa-db-fra.com

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

J'essaie d'implémenter un jeu à l'aide du SDK iPhone OS 4.0 (iOS4?). Dans les versions précédentes du SDK, j'ai utilisé les [UIView beginAnimations: context:] et [UIView commitAnimations] pour créer des animations. Cependant, quand je regarde la documentation des fonctions de 4.0, je vois ce commentaire.

L'utilisation de cette méthode est déconseillée dans iPhone OS 4.0 et versions ultérieures. Vous devez plutôt utiliser les méthodes d'animation basées sur des 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, quelles sont les animations basées sur des blocs dans iPhone OS 4.0? Je pensais que les fonctions beginAnimations: context: et commitAnimations étaient utilisées pour créer des blocs d'animation.

55
kkrizka

Si vous suivez ce lien et faites défiler un peu, vous verrez des méthodes d'animation nouvelles pour ios4.

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

Il existe également des méthodes de transition connexes. Pour chacun d'eux, l'argument animations est un objet bloc :

animations
Un objet bloc contenant les modifications à valider dans les vues. C'est là que vous modifiez par programme les propriétés animables des vues dans votre hiérarchie de vues. Ce bloc ne prend aucun paramètre et n'a aucune valeur de retour. Ce paramètre ne doit pas être NULL.

Bloquer les objets font partie de Programmation simultanée

42
drawnonward

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 * (icône) dans une animation de 2 secondes. Une fois terminée, une autre animation ramènera l'icône à sa position d'origine.

117
ohho

Voici un exemple très simple. Le code efface simplement un UIView et le 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 dans un format différent:

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