web-dev-qa-db-fra.com

iOS - Effets d'animation - Pop-in d'images

Je voudrais avoir une image dans mon application iphone "pop-in" à l'écran plutôt que de simplement apparaître. Par "pop-in", je veux dire qu'il passerait d'un petit point à sa taille réelle. Pour référence, c’est exactement la même chose que l’effet d’animation "pop" dans Keynote . Je suis complètement nouveau dans les animations iOS, donc si quelqu'un pouvait me diriger vers les effets d’animation que je devrais utiliser, il serait grandement apprécié.

Merci

Brian

UPDATE J'ai ajouté ce code parmi les suggestions ci-dessous. Cela fonctionne, mais mon image est réduite au lieu d’augmenter. Je sais que c'est parce que j'ai une taille de transformation de 0,01, mais j'aimerais savoir comment je peux commencer avec une image de taille 0,0 et une échelle jusqu'à 1. S'agit-il simplement d'une question de régler la taille de mon image? 0? Merci

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.2];
image.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
31
Brian Boyle

L’effet recherché correspond à peu près à ceci:

// instantaneously make the image view small (scaled to 1% of its actual size)
view.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
    // animate it to the identity transform (100% scale)
    view.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
    // if you want to do something once the animation finishes, put it here
}];
79
Noah Witherspoon

si vous voulez quelque chose comme Facebook fait sur aimer tout poste alors utilisez ceci 

-(void)animateButton:(UIButton *)sender{
UIButton * btn = (UIButton *)sender;
[UIView animateWithDuration:0.3/1.5 animations:^{
    btn.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.4, 1.4); // scales up the view of button 
} completion:^(BOOL finished) {
    [UIView animateWithDuration:0.3/2 animations:^{
        btn.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.7, 0.7);// scales down the view of button
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.3/2 animations:^{
            btn.transform = CGAffineTransformIdentity; // at the end sets the original identity of the button
        }];
    }];
}];}

il suffit d'appeler cette méthode lorsque vous souhaitez animer la vue

si vous avez du texte et une image sur le bouton et que vous voulez simplement animer l'image du bouton, remplacez simplement "btn" par "btn.imageView", cela produira simplement une animation sur la propriété de visualisation d'image du bouton . J'espère que ça aide Tout le meilleur.

4
Kunal Gupta

Pour cela, vous devrez utiliser un simple UIView

Ajoutez la UIview à votre vue actuelle.

- (void) initPopUpView
 {
   popup.alpha = 0;
   popup.frame = CGRectMake (160, 240, 0, 0);
   [self.view addSubview:popup];
 }

- (void) animatePopUpShow 
 {
   [UIView beginAnimations:nil context:NULL];
   [UIView setAnimationDuration:0.3];
   [UIView setAnimationDelegate:self];
   [UIView setAnimationWillStartSelector:@selector(initPopUpView)];

   popup.alpha = 1;
   popup.frame = CGRectMake (20, 40, 300, 400);

   [UIView commitAnimations];
 }
0
Nil Rathod

Version Swift 2.0 

    view.transform = CGAffineTransformMakeScale(0.01, 0.01);

    UIView.animateWithDuration(0.2, delay: 0, options: .CurveEaseOut, animations: { () -> Void in
        // animate it to the identity transform (100% scale)
        self.view.transform = CGAffineTransformIdentity;

        }) { (finished) -> Void in
        // if you want to do something once the animation finishes, put it here
    }
0
Manu Antony

Vous devez animer le cadre de la vue pour le réduire de zéro à l'état final . Cela peut être fait par exemple avec une animation de bloc UIView.

Par exemple, commencez par afficher votre vue en tant que propriété IBOutlet self.myView avec la taille et la position finales, mais définissez l'indicateur masqué . Ensuite, lorsque vous souhaitez qu'il apparaisse, utilisez les éléments suivants:

// Save old frame as final stater and set it to zero size for the start of the animation
// But keep the same center position, so it just grows and don't move around 
CGRect oldFrame = self.myView.frame;
CGRect oldCenter = self.myView.center;

self.myView.frame = CGRectZero;
self.myView.center = oldCenter;

self.myView.hidden = NO;

NSTimeInterval duration = 0.3;

[UIView animateWithDuration:duration delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
                // New position and size after the animation should be the same as in Interface Builder
                self.myView.frame = oldFrame
    }
                     completion:^(BOOL finished){
                                                 // You can do some stuff here after the animation finished
                     }];
0
Thyraz