Fadein / out text animation

I am using an NSTimer (5 seconds duration) with a selector to select a random name from an NSArray.

Here is some code

....

NSDate *endtime = [NSDate dateWithTimeIntervalSinceNow:5];

    [NSTimer scheduledTimerWithTimeInterval:0.2 
                                     target:self 
                                   selector:@selector(selectPlayer:) 
                                   userInfo:endtime 
                                    repeats:YES ];

      

...

-(void)selectPlayer:(NSTimer *)timer
{
    if ([timer.userInfo timeIntervalSinceNow] < 0) 
    {
        [timer invalidate];
    }

    NSString *playerName = [[NSString alloc]initWithFormat:@"%@", 
                            [self.playersNames objectAtIndex:random() & [self.playersNames count]-1]];


    self.playersLabel.text = playerName;
    [playerName release]; 
}

      

This code works efficiently. self.playersLabel is filled with a random name every 0.2 seconds.

I want to add a fadein / fadeout animation effect while the names are changed in playersLabel.

How to do it?

+3


source to share


2 answers


you can use this to set the text:



    [UIView animateWithDuration:0.4 animations:^{
        self.playersLabel.alpha = 0;
    } completion:^(BOOL finished) {
        self.playersLabel.text = @"Other text";
        [UIView animateWithDuration:0.4 animations:^{
            self.playersLabel.alpha = 1;
        }];
    }];

      

+8


source


You just need to add animation when you change the text playersLabel

Here's how you can do it:



        [UIView animateWithDuration:0.1 delay:0.f options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         playersLabel.alpha = 0.f;
                     } completion:^(BOOL complete){ 
                         [UIView animateWithDuration:0.1 delay:0.f options:UIViewAnimationOptionCurveEaseInOut
                                          animations:^{  
                                            playersLabel.text = playerName;
                                            playersLabel.alpha = 1.f;
                                          } completion:NULL];
                     }];

      

I used the first animation completion block to reset back the alpha value of the label. Each animation lasts 0.1 because yours playerName

is picked every 0.2 seconds (0.1 * 2). You could use UIViewAnimationOptionAutoreverse

, but if I remember it doesn't reset the alpha property of the label.

+1


source







All Articles