11
votes

Comment puis-je faire disparaître du texte à un Uilabel?

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 xxx


0 commentaires

6 Réponses :


28
votes

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];
 }


2 commentaires

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



1
votes

Essayez ceci:

[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];


1 commentaires

Les blocs sont plus puissants. Vous devriez envisager de supprimer les débutants pour l'animation.



6
votes
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");
        }];
    }];

0 commentaires

0
votes
// 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];

                 }];

0 commentaires

0
votes

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];


0 commentaires

31
votes

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];


2 commentaires

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 .


C'est la meilleure façon de le faire. Je ne sais pas pourquoi ce n'est pas la réponse acceptée.