183 votes

Animation Cacher / Montrer

Mon objectif simple est de faire disparaître les fonctions de masquage et d'affichage.

 Button.hidden = YES;
 

Assez simple. Cependant, est-il possible de le faire disparaître plutôt que de disparaître? Cela semble plutôt peu professionnel, et toute aide que vous pourriez apporter serait extrêmement utile.

303voto

Nick Lockwood Points 23277

Michail de la solution, mais ce n'est pas vraiment la meilleure approche.

Le problème avec l'alpha de la décoloration est que, parfois, les différentes qui se chevauchent vue des couches de l'air bizarre comme ils fade out. Il y a d'autres alternatives à l'utilisation de Core Animation. Tout d'abord inclure la QuartzCore cadre de votre application et ajouter #import <QuartzCore/QuartzCore.h> de votre en-tête. Maintenant, vous pouvez effectuer l'une des opérations suivantes:

1) ensemble button.layer.shouldRasterize = YES; , puis utiliser l'alpha code d'animation que Michail fournis dans sa réponse. Cela permettra d'éviter les couches de mélange bizarrement, mais a une légère perte de performance, et peut rendre le bouton floue si elle n'est pas alignée sur un pixel de la frontière.

Sinon:

2) Utiliser le code suivant pour animer le fondu à la place:

CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.4;
[button.layer addAnimation:animation forKey:nil];

button.hidden = YES;

La bonne chose à propos de cette approche est que vous pouvez fondu enchaîné toute propriété de la touche, même si elles ne sont pas animable (par exemple, le texte ou l'image du bouton), il suffit de définir la transition, puis définissez les propriétés de votre immédiatement après.

Mise à JOUR:

Il s'avère que depuis iOS 4, il y a un moyen de le faire simplement à l'aide de la UIView méthode de transition, sans avoir besoin d'importer QuartzCore. Vous pouvez simplement dire:

[UIView transitionWithView:button
                  duration:0.4
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:NULL
                completion:NULL];

button.hidden = YES;

141voto

Pour disparaître progressivement:

 [UIView animateWithDuration:0.3 animations:^{
    button.alpha = 0;
} completion: ^(BOOL finished) {//creates a variable (BOOL) called "finished" that is set to *YES* when animation IS completed.
    button.hidden = finished;//if animation is finished ("finished" == *YES*), then hidden = "finished" ... (aka hidden = *YES*)
}];
 

Fondu en:

 button.alpha = 0;
button.hidden = NO;
[UIView animateWithDuration:0.3 animations:^{
    button.alpha = 1;
}];
 

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