web-dev-qa-db-fra.com

Afficher et estomper UIImageView après 2 secondes

Je travaille sur un système de notification dans mon jeu iPhone et je veux qu'une image apparaisse à l'écran et disparaisse automatiquement après 2 secondes.

  1. L'utilisateur clique sur un bouton qui appelle la méthode "popupImage"
  2. Une image apparaît à l'écran à un endroit désigné, elle n'a pas besoin de se fondre
  3. L'image s'estompe d'elle-même après avoir été à l'écran pendant 2 secondes.

Y a-t-il une manière de faire ça? Merci d'avance.

27
felix_xiao

Utilisez UIView des méthodes dédiées pour cela.

Imaginez donc que vous avez déjà votre UIImageView prêt, déjà créé et ajouté à la vue principale, mais simplement caché. Votre méthode doit simplement la rendre visible, et démarrer une animation 2 secondes plus tard pour la faire disparaître, en animant sa propriété "alpha" de 1.0 à 0.0 (pendant une animation de 0.5s):

-(IBAction)popupImage
{
    imageView.hidden = NO;
    imageView.alpha = 1.0f;
    // Then fades it away after 2 seconds (the cross-fade animation will take 0.5s)
    [UIView animateWithDuration:0.5 delay:2.0 options:0 animations:^{
         // Animate the alpha value of your imageView from 1.0 to 0.0 here
         imageView.alpha = 0.0f;
     } completion:^(BOOL finished) {
         // Once the animation is completed and the alpha has gone to 0.0, hide the view for good
         imageView.hidden = YES;
     }];
}

Aussi simple que cela!

55
AliSoftware

Dans Swift et XCode 6

self.overlay.hidden = false
UIView.animateWithDuration(2, delay:5, options:UIViewAnimationOptions.TransitionFlipFromTop, animations: {
    self.overlay.alpha = 0
    }, completion: { finished in
    self.overlay.hidden = true
})

où la superposition est la sortie de mon image.

12
Joseph Selvaraj

Version Swift 3 de @ AliSoftware's answer

imageView.isHidden = false
imageView.alpha = 1.0

UIView.animate(withDuration: 0.5, delay: 2.0, options: [], animations: {

            self.imageView.alpha = 0.0

        }) { (finished: Bool) in

            self.imageView.isHidden = true
        }
3
iUser

Oui il y a. Jetez un œil à l'animation basée sur les blocs UIViewici . Et google pour un exemple.

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations

Vous pouvez également démarrer un timer

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats
0
ohr