En ce moment, j'ai une ibaction pour un bouton qui génère un nombre aléatoire avec chaque numéro attribué au texte d'affichage dans un Uilabel. Plutôt que d'apparaître, j'aimerais que le texte s'efface ou toute autre animation intéressante serait aussi fraîche. Est-ce que quelqu'un sait un moyen simple de faire cela arriver?
En ce moment, j'utilise simplement p>
6 Réponses :
Le code suivant vous donnera un effet de disparition sur votre étiquette.
- (IBAction)buttonClicked:(UIButton *)sender
{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
}
Merci beaucoup! C'était le premier et ça a fonctionné comme un charme! Très simple et facile à ajuster la durée et ajoutez un retard aussi!
Heureux d'aider :) @ herbie999
Essayez ceci:
[labelMain setAlpha:0]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.8]; [labelMain setAlpha:1]; [UIView commitAnimations];
Les blocs sont plus puissants. Vous devriez envisager de supprimer les débutants pour l'animation.
label.text = @"old text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 0.0f;
} completion:^(BOOL finished) {
label.text = @"next text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 1.0f;
} completion:^(BOOL finished) {
NSLog(@"finished transition");
}];
}];
// fade out the current value
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 0.0f;
}
completion:^(BOOL finished) {
// set the new value and fade in
labelMain.text = newValue;
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 1.0f;
}
completion:nil];
}];
Ceci ressemblera à une animation croisée
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
} completion:nil];
Je sais que c'est un peu rassis (11 mois), mais je pense que cela vaut la peine de mentionner une alternative aux autres approches affichées, que je ressens est une meilleure solution.
Utiliser le uIView transitionwithView : Durée: Options: Animations: Achèvement Code> Méthode de niveau de classe, comme ceci: P> NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
duration:duration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
labelMain.text = @"new value";
} completion:nil];
Juste un pourboire au cas où tout le monde veut animer de nombreuses étiquettes dans le même SuperView, utilisez simplement votre SuperView dans la transition TransitionWithView code>.
C'est la meilleure façon de le faire. Je ne sais pas pourquoi ce n'est pas la réponse acceptée.