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;