Fadein / out文本动画

时间:2012-03-06 13:29:01

标签: objective-c ios animation

我正在使用NSTimer(5秒持续时间)和选择器从NSArray中随机选择名称。

这是一些代码

...

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

该代码完美地运作。 self.playersLabel每0.2秒填充一次随机名称。

我想要的是在playerLabel中更改名称时添加一些fadein / fadeout动画效果。

如何实现?

2 个答案:

答案 0 :(得分:8)

您可以使用它来设置文字:

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

答案 1 :(得分:1)

更改playersLabel

的文字时,您只需添加动画

以下是如何实现这一目标:

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

我使用第一个动画的完成块来重置标签的alpha值。每个动画持续0.1,因为你的playerName每0.2秒(0.1 * 2)被选中。你可以使用UIViewAnimationOptionAutoreverse,但如果我记得它没有重置标签的alpha属性。